From b6df543f0c41fa042e829897ae6d39159c3fd958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Tue, 3 Dec 2024 12:01:24 +0800 Subject: [PATCH 1/8] =?UTF-8?q?update:=20=E4=BF=AE=E6=94=B9=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=B1=BB=E5=9E=8B=E6=8F=8F=E8=BF=B0=EF=BC=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E7=B1=BB=E5=9E=8B=E6=8F=8F=E8=BF=B0=E4=BB=8E=E4=B8=BB?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=AD=E5=BF=83=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoMapper/OrderAutoMapperProfile.cs | 6 +-- src/SJZY.Track.Domain/Consts/GlobalConst.cs | 2 + .../Repositories/OrderRepository.cs | 40 +++++++++++++++++++ 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs index f1a32d4d..0ec4b79a 100644 --- a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs @@ -21,11 +21,7 @@ public class OrderAutoMapperProfile : Profile CreateMap(MemberList.None); CreateMap(MemberList.None); - CreateMap(MemberList.None) - .ForMember(dest => dest.OrderTypeName, - opt => opt.MapFrom(source => GetEnumDescription(2, source.OrderType))) - .ForMember(dest => dest.QuestionTypeName, - opt => opt.MapFrom(source => GetEnumDescription(1, source.QuestionType))); + CreateMap(MemberList.None); CreateMap, UnifyPageResultDto>(MemberList.None); CreateMap(MemberList.None).Ignore(dest => dest.TrackTimeZone) diff --git a/src/SJZY.Track.Domain/Consts/GlobalConst.cs b/src/SJZY.Track.Domain/Consts/GlobalConst.cs index d8064f12..c6416b1d 100644 --- a/src/SJZY.Track.Domain/Consts/GlobalConst.cs +++ b/src/SJZY.Track.Domain/Consts/GlobalConst.cs @@ -2,6 +2,8 @@ namespace SJZY.Track.Domain.Consts; public partial class GlobalConst { + public const string MainDataKey_OrderType = "TrackOrderType"; + public const string MainDataKey_TrackQuestionType = "TrackQuestionType"; public const string SystemUser = "系统"; public const string EmptyString = "--"; public const int ChunkSize = 100; diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs index ec5f18fe..413097c8 100644 --- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs @@ -1,3 +1,4 @@ +using NUglify.Helpers; using SJZY.Expand.ABP.Core.Logger; using SJZY.Track.Domain; using SJZY.Track.Domain.Aggregates.OrderAggregate; @@ -55,6 +56,45 @@ public class OrderRepository : BasicRepository, IOrderRepository, I }) .ToPagedListAsync(input.PageIndex, input.PageSize); + //查询订单类型描述 + var orderTypes = pageList.List.Select(x => x.OrderType).Distinct().ToList(); + var questTypes = pageList.List.Select(x => x.QuestionType).Distinct().ToList(); + //从主数据中心查询类型描述 + var typeDispDict = (await Context.Queryable() + .Where(x => + (x.Property == GlobalConst.MainDataKey_OrderType && orderTypes.Contains(x.Enumkey)) + || (x.Property == GlobalConst.MainDataKey_TrackQuestionType && questTypes.Contains(x.Enumkey)) + ) + .Select(x => new + { + x.Property, + x.Enumkey, + x.Disp + }) + .ToListAsync() + ) + .GroupBy(x => x.Property) + .ToDictionary( + g => g.Key, + y => y.ToDictionary(x => x.Enumkey, x => x.Disp) + ); + + //填充数描述信息 + pageList.List.ForEach(x => + { + x.OrderTypeName = typeDispDict.TryGetValue(GlobalConst.MainDataKey_OrderType, out var orderTypeDisplayDict) + ? orderTypeDisplayDict.TryGetValue(x.OrderType, out var orderTypeDisplay) + ? orderTypeDisplay + : $"未在主数据中心找到Property:[{GlobalConst.MainDataKey_OrderType}] Enumkey:[{x.OrderType}]" + : $"未在主数据中心找到Property:[{GlobalConst.MainDataKey_OrderType}]"; + + x.QuestionTypeName = typeDispDict.TryGetValue(GlobalConst.MainDataKey_TrackQuestionType, out var questDisplayDict) + ? questDisplayDict.TryGetValue(x.QuestionType, out var questDisplay) + ? questDisplay + : $"未在主数据中心找到Property:[{GlobalConst.MainDataKey_OrderType}] Enumkey:[{x.OrderType}]" + : $"未在主数据中心找到Property:[{GlobalConst.MainDataKey_TrackQuestionType}]"; + }); + return pageList; } From 29fbc093a31bd156e27344a57a664d353cfa354e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Tue, 3 Dec 2024 15:50:23 +0800 Subject: [PATCH 2/8] =?UTF-8?q?update:=20=E8=8E=B7=E5=8F=96=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=88=97=E8=A1=A8=EF=BC=8C=E5=A2=9E=E5=8A=A0=E3=80=90?= =?UTF-8?q?TemplateCode=E3=80=91=E8=BD=A8=E8=BF=B9=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=8F=82=E6=95=B0=E5=8F=82=E4=B8=8E=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/ProvideServices/GetTrackTemplateListInput.cs | 5 +++++ .../Dtos/TrackTemplate/GetTrackTemplateListInputVo.cs | 5 +++++ .../Repositories/TrackTemplateRepository.cs | 7 +++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackTemplateListInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackTemplateListInput.cs index 269a1a0e..e1c04282 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackTemplateListInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackTemplateListInput.cs @@ -16,4 +16,9 @@ public class GetTrackTemplateListInput /// 模版分类 /// public int? TemplateType { get; set; } + + /// + /// 模板code + /// + public string? TemplateCode { get; set; } } diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTrackTemplateListInputVo.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTrackTemplateListInputVo.cs index 7e0abd82..a2f111a7 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTrackTemplateListInputVo.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTrackTemplateListInputVo.cs @@ -16,4 +16,9 @@ public class GetTrackTemplateListInputVo /// 模版分类 /// public int? TemplateType { get; set; } + + /// + /// 模板code + /// + public string? TemplateCode { get; set; } } diff --git a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs index 9f28d8fc..24bdc7ea 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs @@ -191,6 +191,7 @@ public class TrackTemplateRepository : BasicRepository, ITr .Where(x => x.SubSystemId == input.SubSystemId) .WhereIF(input.CustomerId.HasValue, x => x.CustomerId == input.CustomerId) .WhereIF(input.TemplateType.HasValue, x => x.CategoryId == input.TemplateType) + .WhereIF(!input.TemplateCode.IsNullOrWhiteSpace(), x => x.Code == input.TemplateCode) .Select(x => new TrackTemplateOutputVo { Id = x.Id, @@ -229,7 +230,6 @@ public class TrackTemplateRepository : BasicRepository, ITr public async Task> GetContentByTemplateCodes(string[] codes, int systemId) { - var sql = @$" select distinct @@ -244,7 +244,10 @@ public class TrackTemplateRepository : BasicRepository, ITr "; - var list = Context.Ado.SqlQuery(sql, new {codes = codes}).ToList(); + var list = Context.Ado.SqlQuery(sql, new + { + codes = codes + }).ToList(); return list; } From fd1328ba4ca8eca2af693bcd7e3ad0d5ad540cda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Tue, 3 Dec 2024 18:20:01 +0800 Subject: [PATCH 3/8] =?UTF-8?q?add:=20=E5=A2=9E=E5=8A=A0=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=88=86=E9=A1=B5=E6=8F=90=E4=BE=9B=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=8E=A5=E5=8F=A3=E3=80=90/ProviderService/Template/G?= =?UTF-8?q?etTrackTemplateListByPage=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetPageTrackTemplateListInput.cs | 24 +++++++++++++ .../TrackTemplateAutoMapperProfile.cs | 2 ++ .../ProvideServices/TrackTemplateService.cs | 14 ++++++++ .../ITrackTemplateRepository.cs | 1 + .../GetPageTrackTemplateListInputVo.cs | 24 +++++++++++++ .../Repositories/TrackTemplateRepository.cs | 36 +++++++++++++++++++ 6 files changed, 101 insertions(+) create mode 100644 src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackTemplateListInput.cs create mode 100644 src/SJZY.Track.Domain/Dtos/TrackTemplate/GetPageTrackTemplateListInputVo.cs diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackTemplateListInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackTemplateListInput.cs new file mode 100644 index 00000000..d193eb8e --- /dev/null +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackTemplateListInput.cs @@ -0,0 +1,24 @@ +namespace SJZY.Track.Application.Contract.Dtos.ProvideServices; + +public class GetPageTrackTemplateListInput : PageInfoInput +{ + /// + /// 子系统id + /// + public int SubSystemId { get; set; } + + /// + /// 客户id + /// + public int? CustomerId { get; set; } + + /// + /// 模版分类 + /// + public int? TemplateType { get; set; } + + /// + /// 模板code + /// + public string? TemplateCode { get; set; } +} diff --git a/src/SJZY.Track.Application/AutoMapper/TrackTemplateAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/TrackTemplateAutoMapperProfile.cs index 850ff421..f6e6b53b 100644 --- a/src/SJZY.Track.Application/AutoMapper/TrackTemplateAutoMapperProfile.cs +++ b/src/SJZY.Track.Application/AutoMapper/TrackTemplateAutoMapperProfile.cs @@ -20,6 +20,8 @@ public class TrackTemplateAutoMapperProfile : Profile CreateMap(MemberList.None); CreateMap, UnifyPageResultDto>(MemberList .None); + CreateMap(MemberList.None); + CreateMap, UnifyPageResultDto>(MemberList.None); CreateMap(MemberList.None); CreateMap(MemberList.None); diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackTemplateService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackTemplateService.cs index 838f0397..ae02e06e 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackTemplateService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackTemplateService.cs @@ -33,4 +33,18 @@ public class TrackTemplateService : ApplicationService, ITrackTemplateService var res = ObjectMapper.Map, List>(templates); return res; } + + /// + /// 分页获取轨迹模版列表 + /// + /// + /// + [HttpPost("Template/GetTrackTemplateListByPage")] + public async Task> GetTrackTemplateListByPageAsync(GetPageTrackTemplateListInput input) + { + var inputVo = ObjectMapper.Map(input); + var templates = await _trackTemplateRepository.GetPageTrackTemplateListAsync(inputVo); + var res = ObjectMapper.Map, UnifyPageResultDto>(templates); + return res; + } } diff --git a/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs index db202083..efae67b2 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackTemplateAggregate/ITrackTemplateRepository.cs @@ -45,5 +45,6 @@ public interface ITrackTemplateRepository : IBasicRepository> whereExpression); Task> GetTrackTemplateListAsync(GetTrackTemplateListInputVo input); + Task> GetPageTrackTemplateListAsync(GetPageTrackTemplateListInputVo input); Task> GetContentByTemplateCodes(string[] codes, int systemId); } diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetPageTrackTemplateListInputVo.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetPageTrackTemplateListInputVo.cs new file mode 100644 index 00000000..b6e253a0 --- /dev/null +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetPageTrackTemplateListInputVo.cs @@ -0,0 +1,24 @@ +namespace SJZY.Track.Domain.Dtos.TrackTemplate; + +public class GetPageTrackTemplateListInputVo :PageInfoInput +{ + /// + /// 子系统id + /// + public int SubSystemId { get; set; } + + /// + /// 客户id + /// + public int? CustomerId { get; set; } + + /// + /// 模版分类 + /// + public int? TemplateType { get; set; } + + /// + /// 模板code + /// + public string? TemplateCode { get; set; } +} diff --git a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs index 24bdc7ea..c7f7c2c4 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs @@ -228,6 +228,42 @@ public class TrackTemplateRepository : BasicRepository, ITr return templates; } + public async Task> GetPageTrackTemplateListAsync(GetPageTrackTemplateListInputVo input) + { + var templates = await Context.Queryable() + .Where(x => x.SubSystemId == input.SubSystemId) + .WhereIF(input.CustomerId.HasValue, x => x.CustomerId == input.CustomerId) + .WhereIF(input.TemplateType.HasValue, x => x.CategoryId == input.TemplateType) + .WhereIF(!input.TemplateCode.IsNullOrWhiteSpace(), x => x.Code == input.TemplateCode) + .Select(x => new TrackTemplateOutputVo + { + Id = x.Id, + TemplateName = x.Name, + TemplateCode = x.Code, + }) + .ToListAsync(); + + if (templates == default) return new UnifyPageResultDto(); + var templateIds = templates.Select(x => x.Id).ToArray(); + var contents = await Context.Queryable() + .LeftJoin((a, b) => a.TrackContentId == b.Id) + .LeftJoin((a, b, c) => b.TrackStatusId == c.Id) + .LeftJoin((a, b, c, d) => c.Node == d.Id) + .Where(a => templateIds.Contains(a.TrackTemplateId)) + .Select((a, b, c, d) => new TemplateContentDtoVo + { + TemplateId = a.TrackTemplateId, + Code = b.Code, + ContentCn = b.Content, + ContentEn = b.EnContent, + Status = c.Status, + Node = d.NodeName + }) + .ToPagedListAsync(input.PageIndex, input.PageSize); + + return contents; + } + public async Task> GetContentByTemplateCodes(string[] codes, int systemId) { var sql = @$" From 01c450315821167d1c99ff53b0c02382f3761357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Wed, 4 Dec 2024 09:46:08 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E5=90=8E=E4=B8=BB=E8=AE=A2=E5=8D=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9B=B4=E6=96=B0=E5=BC=82=E5=B8=B8=20fix:=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BD=A8=E8=BF=B9=E6=96=B0=E5=A2=9E/?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E7=BC=BA=E5=A4=B1=E7=9A=84=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=EF=BC=9A=E9=A2=84=E8=AE=A1=E5=88=B0=E8=BE=BE=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CAP/EventHandlers/TrackDeleteEventHandler.cs | 8 +++++++- .../Services/ProvideServices/TrackService.cs | 4 ++-- .../Aggregates/OrderAggregate/OrderEntity.cs | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 08e079d6..230a456c 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -232,6 +232,8 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe LatestTrackPlace = x.LatestTrackPlace, LatestTrackTime = x.LatestTrackTime, LatestTrackTimeZone = x.LatestTrackTimeZone, + EstimatedDeliveryDate = x.EstimatedDeliveryDate, + DestinationTimeZone = x.DestinationTimeZone }); if (orders.Count == 0) return tracks; @@ -258,6 +260,8 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe order.LatestTrackPlace = track.TrackPlace; order.LatestTrackTime = track.TrackTime; order.LatestTrackTimeZone = track.TrackTimeZone; + order.EstimatedDeliveryDate = track.EstimatedDeliveryDate; + order.DestinationTimeZone = track.DestinationTimeZone; } @@ -281,7 +285,9 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe x.LatestTrackEnContent, x.LatestTrackPlace, x.LatestTrackTime, - x.LatestTrackTimeZone + x.LatestTrackTimeZone, + x.EstimatedDeliveryDate, + x.DestinationTimeZone }); return tracks; diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs index b1afaa30..4e90f379 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.cs @@ -62,7 +62,7 @@ public partial class TrackService : ApplicationService, ITrackService //要求时间在当前时间的前后100年之间内 bool ValidateTrackTime(DateTime? d) => (d != null && d < DateTime.Now.AddYears(-100) || d > DateTime.Now.AddYears(100)); - if (ValidateTrackTime(input.TrackTime) || ValidateTrackTime(input.NewTrackTime)) + if (ValidateTrackTime(input.TrackTime) || ValidateTrackTime(input.NewTrackTime) || ValidateTrackTime(input.EstimatedDeliveryDate)) { throw new BusinessException(message: "轨迹时间不合法"); } @@ -330,7 +330,7 @@ public partial class TrackService : ApplicationService, ITrackService //要求时间在当前时间的前后100年之间内 bool ValidateTrackTime(DateTime? d) => (d != null && d < DateTime.Now.AddYears(-100) || d > DateTime.Now.AddYears(100)); - if (ValidateTrackTime(input.TrackTime) || ValidateTrackTime(input.NewTrackTime)) + if (ValidateTrackTime(input.TrackTime) || ValidateTrackTime(input.NewTrackTime) || ValidateTrackTime(input.EstimatedDeliveryDate)) { throw new BusinessException(message: "轨迹时间不合法"); } diff --git a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs index 762c1324..eaf3ca71 100644 --- a/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs +++ b/src/SJZY.Track.Domain/Aggregates/OrderAggregate/OrderEntity.cs @@ -201,5 +201,7 @@ public class OrderEntity : IFullAuditedBasicEntitys, IAggregateRoot LatestTrackTime = null; LatestTrackPlace = null; LatestTrackTimeZone = null; + EstimatedDeliveryDate = null; + DestinationTimeZone = null; } } From ac5028587fc5255824e84d91d2254a2e12ff5e1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Wed, 4 Dec 2024 09:55:13 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E9=80=9A=E8=BF=87=E8=AE=A2=E5=8D=95=E5=8F=B7?= =?UTF-8?q?+=E5=AD=90=E7=B3=BB=E7=BB=9Fid=E6=9F=A5=E8=AF=A2=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/TrackOrders/TrackOrderService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs index 3f3aa542..53bfc8c3 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -127,13 +127,13 @@ public class TrackOrderService : ApplicationService if (whereExpression == default) throw new BusinessException(message: "请求参数异常"); - var subSystemId = await _orderRepository.GetFirstAsync(whereExpression, x => x.SubSystemId); - if (subSystemId == default) + var order = await _orderRepository.GetFirstAsync(whereExpression); + if (order == default) { throw new BusinessException(message: "订单不存在"); } - var trackDetails = await _trackDetailsEsRepository.GetListAsync(orderId ?? 0); + var trackDetails = await _trackDetailsEsRepository.GetListAsync(order.Id); if (trackDetails.IsNullOrEmpty()) { return new List(); @@ -150,7 +150,7 @@ public class TrackOrderService : ApplicationService if (!trackCodes.IsNullOrEmpty()) { var trackContents = await _trackContentRepository.GetListAsync(x => - x.SubSystemId == subSystemId && trackCodes.Contains(x.Code), x => new + x.SubSystemId == order.SubSystemId && trackCodes.Contains(x.Code), x => new { x.Code, x.IsExternal From ae011fb8fb5128ab96adc9ef9212fa35cd6bd7ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Wed, 4 Dec 2024 10:12:11 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?EsId=E5=88=A0=E9=99=A4=E6=9B=B4=E6=96=B0=E5=BD=93=E5=9C=B0?= =?UTF-8?q?=E4=B8=BB=E8=A1=A8=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CAP/EventHandlers/TrackDeleteEventHandler.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 230a456c..3d9885fd 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -175,6 +175,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe { List orderIds; List tracks; + List deleteTracks; if (@event.EsIds != null && @event.EsIds.Any()) //根据明确的esid进行删除 { tracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds); @@ -196,6 +197,8 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName); } + //已经删除的轨迹 + deleteTracks = tracks; //清理已经删除过的esid @event.EsIds = Array.Empty(); } @@ -207,7 +210,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe //构建标识符集合 var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime}").ToList(); //根据标识符选出要删除的轨迹明细 - var deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime}")).ToList(); + deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime}")).ToList(); if (deleteTracks.Count == 0) return deleteTracks; @@ -218,10 +221,10 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe //从被删除轨迹寻找订单id,稍后会更新订单主表 orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList(); - //排除掉已经删除的轨迹 - tracks = tracks.Except(deleteTracks).ToList(); } + //排除掉已经删除的轨迹 + tracks = tracks.Except(deleteTracks).ToList(); var orders = await _orderRepository.GetListAsync(x => orderIds.Contains(x.Id), x => new OrderEntity @@ -240,7 +243,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe foreach (var order in orders) { //找到最新的轨迹数据 - var track = tracks?.OrderByDescending(x=>x.TrackTime) + var track = tracks?.OrderByDescending(x => x.TrackTime) .FirstOrDefault(x => x.OrderId == order.Id); // 删除全部轨迹导致的重置行为 @@ -271,7 +274,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe OrderId = order.Id, OrderNo = order.OrderNo, OptionType = OrderOperationType.删除轨迹.ToString(), - Content = tracks?.Where(m => m.OrderId == order.Id).ToList().ToJson(), + Content = deleteTracks?.Where(m => m.OrderId == order.Id).ToList().ToJson(), CreateUserId = @event.OperationManId, CreateUserName = @event.OperationMan ?? "", CreateTime = DateTime.Now @@ -290,6 +293,6 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe x.DestinationTimeZone }); - return tracks; + return deleteTracks; } } From 42afc3d5a15fe318f2907a15bd43b84a41a6c001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Wed, 4 Dec 2024 17:08:59 +0800 Subject: [PATCH 7/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=80=9A=E8=BF=87?= =?UTF-8?q?EsId=E5=88=A0=E9=99=A4=E8=BD=A8=E8=BF=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E4=B8=BB=E8=A1=A8=E5=9B=9E=E9=80=80=E6=9B=B4=E6=96=B0=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EventHandlers/TrackDeleteEventHandler.cs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs index 3d9885fd..e9db1cfa 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackDeleteEventHandler.cs @@ -178,27 +178,28 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe List deleteTracks; if (@event.EsIds != null && @event.EsIds.Any()) //根据明确的esid进行删除 { - tracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds); - orderIds = tracks.Select(m => m.OrderId).Distinct().ToList(); + deleteTracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds); + orderIds = deleteTracks.Select(m => m.OrderId).Distinct().ToList(); @event.OrderIds = orderIds.ToArray(); - @event.TrackIdentifiers = tracks.Select(x => new TrackIdentifierDto + @event.TrackIdentifiers = deleteTracks.Select(x => new TrackIdentifierDto { TrackCode = x.TrackCode, TrackTime = x.TrackTime }).ToList(); // 外部api获取的轨迹不允许删除 - if (tracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode())) - return tracks; + if (deleteTracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode())) + return deleteTracks; + + //查出订单下的所有轨迹,以供后面回退使用 + tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds); // 删除轨迹 - foreach (var item in tracks) + foreach (var item in deleteTracks) { await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName); } - //已经删除的轨迹 - deleteTracks = tracks; //清理已经删除过的esid @event.EsIds = Array.Empty(); } @@ -208,9 +209,9 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe tracks = await _trackDetailsEsRepository.GetListAsync(@event.OrderIds); //构建标识符集合 - var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime}").ToList(); + var ids = @event.TrackIdentifiers.Select(x => $"{x.TrackCode}{x.TrackTime:G}").ToList(); //根据标识符选出要删除的轨迹明细 - deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime}")).ToList(); + deleteTracks = tracks.Where(x => ids.Contains($"{x.TrackCode}{x.TrackTime:G}")).ToList(); if (deleteTracks.Count == 0) return deleteTracks; From d6e58a38fd31822387666b6a92e4088c8979ecc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E9=BE=99=20=E7=8E=8B?= Date: Wed, 4 Dec 2024 17:19:29 +0800 Subject: [PATCH 8/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E8=BD=A8=E8=BF=B9=E6=97=B6=E9=97=B4=E8=AE=A2=E5=8D=95=E4=B8=BB?= =?UTF-8?q?=E8=A1=A8=E6=9B=B4=E6=96=B0=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CAP/EventHandlers/TrackUpsertEventHandler.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs index c26118a3..d2c39cd4 100644 --- a/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/CAP/EventHandlers/TrackUpsertEventHandler.cs @@ -241,7 +241,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe TrackContent = trackContent.TrackContent, TrackEnContent = trackContent.TrackEnContent, TrackPlace = @event.TrackPlace, - TrackTime = @event.TrackTime, + TrackTime = @event.NewTrackTime ?? @event.TrackTime, TrackTimeZone = @event.TrackTimeZone, DestinationTimeZone = @event.DestinationTimeZone, EstimatedDeliveryDate = @event.EstimatedDeliveryDate @@ -261,7 +261,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe TrackStatus = trackContent.TrackStatus, TrackContent = trackContent.TrackContent, TrackPlace = @event.TrackPlace, - TrackTime = @event.TrackTime, + TrackTime = @event.NewTrackTime ?? @event.TrackTime, TrackTimeZone = @event.TrackTimeZone } };