diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs index eda7ecbc..dcafe452 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackOutput.cs @@ -5,17 +5,18 @@ public class GetTrackOutput /// /// 订单号 /// - public string OrderNo { get; set; } + public string OrderNo { get; set; } = null!; - public List TrackDetails { get; set; } + public List TrackDetails { get; set; } = new(); } public class TrackDetail { - public string Code { get; set; } - public string Status { get; set; } - public string Content { get; set; } - public string Location { get; set; } + public string Code { get; set; } = null!; + public string Status { get; set; } = null!; + public string? Content { get; set; } + public string? OriginContent { get; set; } + public string Location { get; set; } = null!; public DateTime Time { get; set; } public float TimeZone { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs index d2a829ca..8a99f816 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackContents/EditTrackContentInput.cs @@ -88,7 +88,7 @@ /// /// 轨迹标记id /// - public int TrackFlagId { get; set; } + public int? TrackFlagId { get; set; } /// /// 轨迹标记 diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs new file mode 100644 index 00000000..7875d4da --- /dev/null +++ b/src/SJZY.Track.Application.Contract/Dtos/TrackPush/TrackPushInput.cs @@ -0,0 +1,20 @@ +namespace SJZY.Track.Application.Contract.Dtos.TrackPush; + +public class TrackPushInput +{ + public string OrderNo { get; set; } = null!; + + public List Data { get; set; } = new(); +} + +public class TrackItem +{ + public string Location { get; set; } = null!; + public DateTime Date { get; set; } + public double TimeZone { get; set; } + public string? Description { get; set; } + public string? DescriptionCn { get; set; } + public string? Code { get; set; } + public string? Status { get; set; } + public string? Extra { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs index 3533f2e6..53e0d856 100644 --- a/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs +++ b/src/SJZY.Track.Application.Contract/Events/TrackUpsertEvent.cs @@ -22,6 +22,16 @@ public class TrackUpsertEvent /// public string? ServiceProviderName { get; set; } + /// + /// 原轨迹内容 + /// + public string? OriginTrackContent { get; set; } + + /// + /// 原轨迹报文 + /// + public string? OriginTrackData { get; set; } + /// /// 表示订单是否完成(只由轨迹刷新配置决定) /// tips:能够使得IsCompleted为true的点,全局只有一个:轨迹刷新 diff --git a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs index d04c0fa2..8928ae11 100644 --- a/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs +++ b/src/SJZY.Track.Application.Contract/Services/ITrackPushCacheService.cs @@ -12,6 +12,14 @@ public interface ITrackPushCacheService /// Task?> GetPushContentConfigsAsync(int subSystemId, int customId); + /// + /// 设置服务商拉取配置缓存 + /// + /// + /// + /// + Task?> SetPushContentConfigsAsync(int subSystemId, int customId); + /// /// 获取服务商拉取配置 /// @@ -33,14 +41,4 @@ public interface ITrackPushCacheService Task IsValidPushAsync(int subSystemId, int customId, string? latestPushTrackCode, string? trackCode); - - /// - /// 设置推送配置缓存 - /// - /// - /// 子系统id - /// 客户id - /// - Task?> SetPushContentConfigsAsync(int? id = null, int? subSystemId = null, - int? customId = null); } \ No newline at end of file diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs index 68ad47d4..9ebea1f6 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackPushEventHandler.cs @@ -1,5 +1,5 @@ using DotNetCore.CAP; -using Newtonsoft.Json.Linq; +using Newtonsoft.Json; using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.InterfaceRelay.Application.Contracts; using SJZY.Track.Application.Contract.Dtos.TrackPush; @@ -152,33 +152,33 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe private async Task DoAddAsync(TrackPushEvent @event, TrackPushContentConfigDto config, TrackPushRecordIndex log) { - var track = new + var track = new TrackItem { // 推真实的发生地和发生时间(时间是计算后的) - location = @event.TrackPlace, - date = @event.TrackTime.AddHours( + Location = @event.TrackPlace, + Date = @event.TrackTime.AddHours( config.TrackTimeZone ?? @event.TrackTimeZone - @event.TrackTimeZone), - timeZone = config.TrackTimeZone ?? @event.TrackTimeZone, - description = config.TrackEnContentValue, - description_cn = config.TrackContentValue, - code = config.TrackContentCodeValue, - status = config.TrackStatusValue, - extra = config.ExpandFieldsValue + TimeZone = config.TrackTimeZone ?? @event.TrackTimeZone, + Description = config.TrackEnContentValue, + DescriptionCn = config.TrackContentValue, + Code = config.TrackContentCodeValue, + Status = config.TrackStatusValue, + Extra = config.ExpandFieldsValue }; - JObject body = JObject.FromObject(new + var body = new TrackPushInput() { - orderNo = @event.OrderNo, - data = new[] { track } - }); + OrderNo = @event.OrderNo, + }; + body.Data.Add(track); if (config.IsAllPush) { var history = await _trackPushRecordsRepository.GetLatestTrackPushRecordAsync(@event.OrderId); if (history != default) { - body = JObject.Parse(history.PushContent); - ((JArray)body["data"]!).Add(JObject.FromObject(track)); + body = JsonConvert.DeserializeObject(history.PushContent); + body!.Data.Add(track); } } @@ -186,6 +186,7 @@ public class TrackPushEventHandler : ITransientDependency, ICapSubscribe config.ServiceProviderCode, body); log.PushContent = body.ToJson(); + log.IsSuccess = res.Code == InterfaceRelayConst.SuccessCode; log.RequestId = res.RequestId; log.Message = res.Msg; diff --git a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs index b4bfe207..61431b30 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackRefreshEventHandler.cs @@ -218,6 +218,7 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe OrderType = context.OrderType, OrderNo = context.OrderNo, ServiceProviderName = context.ServiceProviderName, + OriginTrackData = JsonConvert.SerializeObject(trackToken), IsCompleted = matchedContentConfig.IsCompleted, SubSystemId = context.SubSystemId, TrackCode = matchedContentConfig.TrackContentCode, @@ -225,6 +226,11 @@ public class TrackRefreshEventHandler : ITransientDependency, ICapSubscribe TrackTime = trackTime ?? DateTime.Now, TrackTimeZone = trackTimeZone ?? matchedContentConfig.TrackTimeZoneValue ?? 8 }; + if (paramConfig.TrackContentName != null) + { + trackUpsertEvent.OriginTrackContent = trackToken[paramConfig.TrackContentName]?.Value(); + } + await _capPublisher.PublishAsync(GlobalConst.TrackUpsertSubscribe, trackUpsertEvent); } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs index 41ce263b..105ef588 100644 --- a/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs +++ b/src/SJZY.Track.Application/EventHandlers/TrackUpsertEventHandler.cs @@ -131,6 +131,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe TrackTime = @event.TrackTime, TrackTimeZone = @event.TrackTimeZone, ServiceProviderName = @event.ServiceProviderName, + OriginTrackContent = @event.OriginTrackContent, + OriginTrackData = @event.OriginTrackData, IsCanDelete = false, CreateUser = @event.OperationMan ?? GlobalConst.SystemUser, CreateTime = DateTime.Now diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs index 35237196..3864b604 100644 --- a/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs +++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackService.Query.cs @@ -39,6 +39,7 @@ public partial class TrackService Code = x.TrackCode, Status = x.TrackStatus, Content = x.TrackContent, + OriginContent = x.OriginTrackContent, Location = x.TrackPlace, Time = x.TrackTime.AddHours(input.TimeZone ?? 8 - x.TrackTimeZone), TimeZone = input.TimeZone ?? 8 @@ -54,6 +55,29 @@ public partial class TrackService private async Task TrackDetailSort(List list, GetTrackInput input) { + var orderTemplates = await _provideQueries + .GetOrderTemplateLinksAsync(input.OrderType, input.OrderNos); + var distinctTemplateIds = orderTemplates.Select(x => x.TemplateId).Distinct().ToList(); + var templateContent = await _provideQueries.GetOrderedTrackCodesAsync(distinctTemplateIds); + + list.ForEach(item => + { + var codes = new List(); + // 多模板拼接显示 + foreach (var orderTemplate in orderTemplates.Where(x => x.OrderNo == item.OrderNo)) + { + codes.AddRange(templateContent + .Where(t => t.TemplateId == orderTemplate.TemplateId) // 按模板 + .Where(t => t.IsExternal) // 过滤不对外的 + .Select(t => t.Code)); + } + + item.TrackDetails = item.TrackDetails + .Where(x => codes.Contains(x.Code)) // 剔除不在模板内容中的元素 + .OrderBy(x => codes.IndexOf(x.Code)) // 按照在模板内容的位置排序 + .ToList(); + }); + switch (input.SortMethod) { case SortMethod.ByTrackTime: @@ -64,30 +88,21 @@ public partial class TrackService list.ForEach(item => item.TrackDetails.Sort((a, b) => b.Time.CompareTo(a.Time))); break; case SortMethod.ByTemplate: - var orderTemplates = await _provideQueries - .GetOrderTemplateLinksAsync(input.OrderType, input.OrderNos); - var distinctTemplateIds = orderTemplates.Select(x => x.TemplateId).Distinct().ToList(); - var templateContent = await _provideQueries.GetOrderedTrackCodesAsync(distinctTemplateIds); - list.ForEach(item => - { - var codes = new List(); - // 多模板拼接显示 - foreach (var orderTemplate in orderTemplates.Where(x => x.OrderNo == item.OrderNo)) - { - codes.AddRange(templateContent - .Where(t => t.TemplateId == orderTemplate.TemplateId) // 按模板 - .Where(t => t.IsExternal) // 过滤不对外的 - .Select(t => t.Code)); - } - - item.TrackDetails = item.TrackDetails - .Where(x => codes.Contains(x.Code)) // 剔除不在模板内容中的元素 - .OrderBy(x => codes.IndexOf(x.Code)) // 按照在模板内容的位置排序 - .ToList(); - }); break; default: throw new ArgumentOutOfRangeException(nameof(input.SortMethod), input.SortMethod, "不支持的排序方式"); } + + // 显示原轨迹 + list.ForEach(item => + { + item.TrackDetails.ForEach(track => + { + if (templateContent.First(x => x.Code == track.Code).ShowOrigin) + { + track.Content = track.OriginContent; + } + }); + }); } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs index 657cc671..9ed8374e 100644 --- a/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs +++ b/src/SJZY.Track.Application/Services/TrackContents/TrackContentService.cs @@ -59,6 +59,8 @@ public class TrackContentService : ApplicationService } var dto = ObjectMapper.Map(detailInfo); + + if (dto.TrackFlagId == 0) dto.TrackFlagId = null; return new UnifyResultDto("200", "", dto); } diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs index 88d6b079..bf365f28 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushCacheService.cs @@ -1,5 +1,4 @@ -using System.Linq.Expressions; -using SJZY.Expand.ABP.Core; +using SJZY.Expand.ABP.Core; using SJZY.Track.Application.Contract.Dtos.TrackPush; using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.TrackPushAggregate; @@ -22,11 +21,23 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc public async Task?> GetPushContentConfigsAsync(int subSystemId, int customId) { - var data = await RedisHelper.Client.GetAsync>( - TrackPushContentKey(subSystemId, customId)); + var exists = await RedisHelper.Client.ExistsAsync(TrackPushContentKey(subSystemId, customId)); + if (exists) + { + return await RedisHelper.Client.GetAsync>( + TrackPushContentKey(subSystemId, customId)); + } - data ??= await SetPushContentConfigsAsync(subSystemId: subSystemId, customId: customId); + return await SetPushContentConfigsAsync(subSystemId, customId); + } + public async Task?> SetPushContentConfigsAsync(int subSystemId, int customId) + { + // maybe is null + var data = await DoGetPushContentConfigsAsync(subSystemId, customId); + // ttl 3days + await RedisHelper.Client.SetAsync(TrackPushContentKey(subSystemId, customId), + data, 3 * 24 * 60 * 60); return data; } @@ -58,23 +69,23 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc return matched != null && matched.TrackCode == trackCode && matched.IsAutoPush ? matched : default; } - public async Task?> SetPushContentConfigsAsync(int? id = null, - int? subSystemId = null, - int? customId = null) + private async Task?> DoGetPushContentConfigsAsync(int subSystemId, int customId) { - Expression> exp = x => true; - if (id.HasValue) exp = x => x.Id == id; - else if (subSystemId.HasValue && customId.HasValue) - exp = x => x.SubSystemId == subSystemId && x.CustomId == customId; - - var trackPushConfig = await _trackPushConfigRepository.GetFirstAsync(exp, x => new + var trackPushConfig = await _trackPushConfigRepository.GetFirstAsync( + x => x.SubSystemId == subSystemId && x.CustomId == customId, x => new + { + x.Id, x.IsAutoPush, x.IsAllPush, x.IsCanDelete, x.IsCanUpdate, x.SubSystemId, x.CustomId + }); + if (trackPushConfig == null) { - x.Id, x.IsAutoPush, x.IsAllPush, x.IsCanDelete, x.IsCanUpdate, x.SubSystemId, x.CustomId - }); - if (trackPushConfig == null) return null; + return null; + } var trackPushContentList = await _trackPushConfigRepository.GetContentListAsync(trackPushConfig.Id); - if (trackPushContentList.Count == 0) return null; + if (trackPushContentList.Count == 0) + { + return null; + } // tips:hot path,auto mapper性能不如原生 var res = trackPushContentList.Select(item => new TrackPushContentConfigDto @@ -95,9 +106,6 @@ public class TrackPushCacheService : ITrackPushCacheService, ITransientDependenc ExpandFieldsValue = item.ExpandFieldsValue, }).ToList(); - await RedisHelper.Client.SetAsync(TrackPushContentKey(trackPushConfig.SubSystemId, trackPushConfig.CustomId), - res); - return res; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs index 5225e8db..f7d69e1d 100644 --- a/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs +++ b/src/SJZY.Track.Application/Services/TrackPush/TrackPushService.cs @@ -95,12 +95,17 @@ public class TrackPushService : ApplicationService throw new BusinessException(message: _stringLocalizer["IsTrackPushConfigAny"]); } + using var ts = TransactionScopeHelper.Create(); + switch (input.Options) { case OptionTypeNoNull.新增: { var trackPushEntity = ObjectMapper.Map(input); + await _trackPushConfigRepository.InsertReturnIdentityAsync(trackPushEntity); + await _trackPushCacheService.SetPushContentConfigsAsync(trackPushEntity.SubSystemId, + trackPushEntity.CustomId); } break; @@ -111,21 +116,19 @@ public class TrackPushService : ApplicationService ObjectMapper.Map(input, oldTrackPushEntity); await _trackPushConfigRepository.UpdateAsync(oldTrackPushEntity); - - if (input.IsAutoPush!.Value) await _trackPushCacheService.SetPushContentConfigsAsync(input.Id); + await _trackPushCacheService.SetPushContentConfigsAsync(oldTrackPushEntity.SubSystemId, + oldTrackPushEntity.CustomId); } break; case OptionTypeNoNull.删除: { - _ = await _trackPushConfigRepository.GetFirstAsync(x => x.Id == input.Id) ?? - throw new BusinessException(message: _stringLocalizer["NotFindData"]); + var entity = await _trackPushConfigRepository.GetFirstAsync(x => x.Id == input.Id) ?? + throw new BusinessException(message: _stringLocalizer["NotFindData"]); - using var ts = TransactionScopeHelper.Create(); await _trackPushConfigRepository.SoftDeleteAsync(x => x.Id == input.Id); await _trackPushConfigRepository.SoftDeleteContentAsync(x => x.TrackPushConfigId == input.Id); - - ts.Complete(); + await _trackPushCacheService.SetPushContentConfigsAsync(entity.SubSystemId, entity.CustomId); } break; @@ -134,6 +137,7 @@ public class TrackPushService : ApplicationService nameof(EditTrackPushConfigInput.Options)]); } + ts.Complete(); return true; } @@ -172,6 +176,10 @@ public class TrackPushService : ApplicationService throw new BusinessException(message: _stringLocalizer["IsTrackPushEnContentValueAny"]); } + var trackPushConfigId = input.TrackPushConfigId; + + using var ts = TransactionScopeHelper.Create(); + switch (input.Options) { case OptionTypeNoNull.新增: @@ -181,10 +189,7 @@ public class TrackPushService : ApplicationService var entity = ObjectMapper.Map(input); entity.Sort = maxSort + 1; - await _trackPushConfigRepository.InsertContentAsync(entity); - await _trackPushCacheService.SetPushContentConfigsAsync(input.TrackPushConfigId); - break; } @@ -194,10 +199,7 @@ public class TrackPushService : ApplicationService throw new BusinessException(message: _stringLocalizer["NotFindData"]); ObjectMapper.Map(input, entity); - await _trackPushConfigRepository.UpdateContentAsync(entity); - await _trackPushCacheService.SetPushContentConfigsAsync(entity.TrackPushConfigId); - break; } @@ -205,18 +207,10 @@ public class TrackPushService : ApplicationService { var entity = await _trackPushConfigRepository.GetContentByIdAsync(input.Id!.Value) ?? throw new BusinessException(message: _stringLocalizer["NotFindData"]); - - using (var ts = TransactionScopeHelper.Create()) - { - await _trackPushConfigRepository.SoftDeleteContentAsync(x => x.Id == input.Id); - await _trackPushConfigRepository.UpdateContentAsync(x => x.Sort == x.Sort - 1, - x => x.TrackPushConfigId == entity.TrackPushConfigId && x.Sort > entity.Sort); - - ts.Complete(); - } - - await _trackPushCacheService.SetPushContentConfigsAsync(entity.TrackPushConfigId); - + trackPushConfigId = entity.TrackPushConfigId; + await _trackPushConfigRepository.SoftDeleteContentAsync(x => x.Id == input.Id); + await _trackPushConfigRepository.UpdateContentAsync(x => x.Sort == x.Sort - 1, + x => x.TrackPushConfigId == entity.TrackPushConfigId && x.Sort > entity.Sort); break; } @@ -225,6 +219,14 @@ public class TrackPushService : ApplicationService nameof(EditTrackPushContentInput.Options)]); } + var pushConfig = await _trackPushConfigRepository.GetFirstAsync(x => x.Id == trackPushConfigId); + if (pushConfig != null) + { + await _trackPushCacheService.SetPushContentConfigsAsync(pushConfig.SubSystemId, pushConfig.CustomId); + } + + ts.Complete(); + return true; } @@ -247,8 +249,19 @@ public class TrackPushService : ApplicationService if (trackPushContentEntities.Count > 0) { + using var ts = TransactionScopeHelper.Create(); + await _trackPushConfigRepository.UpdateContentRangeAsync(trackPushContentEntities); - await _trackPushCacheService.SetPushContentConfigsAsync(trackPushContentEntities[0].TrackPushConfigId); + + var pushConfig = + await _trackPushConfigRepository.GetFirstAsync(x => + x.Id == trackPushContentEntities[0].TrackPushConfigId); + if (pushConfig != null) + { + await _trackPushCacheService.SetPushContentConfigsAsync(pushConfig.SubSystemId, pushConfig.CustomId); + } + + ts.Complete(); } return true; diff --git a/src/SJZY.Track.Application/Services/TrackTemplates/ITrackTemplateService.cs b/src/SJZY.Track.Application/Services/TrackTemplates/ITrackTemplateService.cs deleted file mode 100644 index f6e29107..00000000 --- a/src/SJZY.Track.Application/Services/TrackTemplates/ITrackTemplateService.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace SJZY.Track.Application.Services.TrackTemplates -{ - public interface ITrackTemplateService - { - - } -} diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs index cb31744d..43805324 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/OrderedTrackCodeDto.cs @@ -16,4 +16,9 @@ public class OrderedTrackCodeDto /// 是否对外 /// public bool IsExternal { get; set; } + + /// + /// 显示原轨迹 + /// + public bool ShowOrigin { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs index cce3c885..7f144688 100644 --- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs +++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs @@ -20,20 +20,6 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, 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() @@ -49,15 +35,17 @@ public class ProvideQueries : ISugarRepository, IProvideQueries, 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 + return await Context.Queryable() + .LeftJoin((a, b) => a.Id == b.TrackTemplateId) + .LeftJoin((a, b, c) => b.TrackContentId == c.Id) + .Where(a => templateIds.Contains(a.Id)) + .OrderBy((a, b) => b.Sort) + .Select((a, b, c) => new OrderedTrackCodeDto { - TemplateId = a.TrackTemplateId, - Code = b.Code, - IsExternal = a.IsExternal + TemplateId = a.Id, + ShowOrigin = a.ShowOrigin, + Code = c.Code, + IsExternal = b.IsExternal }) .ToListAsync(); } diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs index 1229eec7..03b3c7c9 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs @@ -85,6 +85,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract f.TrackStatus) .Field(f => f.TrackCode) .Field(f => f.TrackContent) + .Field(f => f.OriginTrackContent) .Field(f => f.TrackPlace) .Field(f => f.TrackTime) .Field(f => f.TrackTimeZone)