diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs index d16e10fe..3920f5c1 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs @@ -1,4 +1,6 @@ -namespace SJZY.Track.Application.Contract.Dtos.ProvideServices +using System.Reflection.Metadata.Ecma335; + +namespace SJZY.Track.Application.Contract.Dtos.ProvideServices { public class GetOrderDetailsInput { @@ -11,6 +13,11 @@ /// 子系统id /// public int SubSystemId { get; set; } + + /// + /// 轨迹模板Id + /// + public List? TrackTemplateIds { get; set; } = new List(); } public class TrackOrderDetailDto diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackOrderInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackOrderInput.cs index 5b2220d2..81aa553e 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackOrderInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetPageTrackOrderInput.cs @@ -15,7 +15,7 @@ public class GetPageTrackOrderInput : PageInfoInput /// /// 单号 /// - public string? OrderNos { get; set; } + public string? OrderNos { get; set; } /// /// 创建时间开始 @@ -58,6 +58,11 @@ public class TrackOrderDto /// public string? TrackTemplateNames { get; set; } + /// + /// 轨迹模板Id数组 + /// + public List? TrackTemplateIds { get; set; } + /// /// 客户简称 /// @@ -108,5 +113,5 @@ public class TrackOrderDto /// public string SubSystem { get; set; } - public int SubSystemId { get;set; } + public int SubSystemId { get; set; } } \ No newline at end of file diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs index 587ba728..1c37f744 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -45,11 +45,12 @@ namespace SJZY.Track.Application.Services.TrackOrders if (!trackDetails.IsNullOrEmpty()) { var list = ObjectMapper.Map, List>(trackDetails); - var trackCodes = list.Where(a => !a.Code.IsNullOrWhiteSpace()).Select(a => a.Code).ToList(); + var trackCodes = list.Where(a => !a.Code.IsNullOrWhiteSpace()).Select(a => a.Code).Distinct().ToList(); var trackContents = await _trackContentRepository.GetTrackContentAttributeValue(new GetTemplateContentAttributeValueInputVO { SubSystemId =input.SubSystemId, + TrackTemplateIds = input.TrackTemplateIds, TrackCodes=trackCodes }); @@ -57,13 +58,16 @@ namespace SJZY.Track.Application.Services.TrackOrders list.ForEach(a => { a.Id = id++; - var trackContent = trackContents.FirstOrDefault(b => b.SubSystemId==input.SubSystemId&& b.TrackCode==a.Code); + + var trackContentsOfTemplates = trackContents.Where(b => b.SubSystemId==input.SubSystemId && b.TrackCode==a.Code + && input.TrackTemplateIds.Contains(b.TrackTemplateId)); + var trackContent = trackContentsOfTemplates.FirstOrDefault(); if (trackContent!=null) { a.IsCanDelete=trackContent.IsCanDelete; a.IsExternal = trackContent.IsExternal; } - if (a.TrackTimeZoneValue==0) + if (a.TrackTimeZoneValue==0f) { a.TrackTimeZone=$"GTM{" "}+00:00"; } diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs index b596a5e1..c1b97cc5 100644 --- a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs @@ -119,5 +119,10 @@ namespace SJZY.Track.Domain.Dtos.Order /// 子系统id /// public int SubSystemId { get; set; } + + /// + /// 轨迹模板Id数组 + /// + public List? TrackTemplateIds { get; set; } } } diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs index 1ba46bf4..d8b295a9 100644 --- a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs @@ -16,7 +16,12 @@ namespace SJZY.Track.Domain.Dtos.TrackTemplate /// /// 轨迹代码 /// - public List? TrackCodes { get; set; } + public List? TrackCodes { get; set; } + + /// + /// 轨迹模板Id + /// + public List? TrackTemplateIds { get; set; } ///// ///// 订单id @@ -34,7 +39,7 @@ namespace SJZY.Track.Domain.Dtos.TrackTemplate /// /// 模版id /// - public int TrackTemplateId { get; set; } + public int TrackTemplateId { get; set; } /// /// 轨迹内容代码 diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs index 21beff94..481a5c87 100644 --- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs @@ -148,9 +148,13 @@ public class OrderRepository : BasicRepository, IOrderRepository, I .Return("箱/袋单").ElseIF(a.OrderType == 4).Return("FBA订单").End(""), 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, ","), + //TrackTemplateNames = SqlFunc.Subqueryable() + // .LeftJoin((aa, bb) => aa.TrackTemplateId == bb.Id) + // .Where((aa, bb) => a.Id == aa.OrderId).SelectStringJoin((aa, bb) => bb.Name, ","), + + //TrackTemplateIds = SqlFunc.Subqueryable() + // .LeftJoin((aa, bb) => aa.TrackTemplateId == bb.Id) + // .Where((aa, bb) => a.Id == aa.OrderId).SelectStringJoin((aa, bb) => bb.Id, ","), NewestTrackContent = a.LatestTrackContent, NewestTrackEnContent = a.LatestTrackEnContent, NewestTrackPlace = a.LatestTrackPlace, @@ -166,34 +170,41 @@ public class OrderRepository : BasicRepository, IOrderRepository, I { //查询也需要最新的轨迹 var orderIds = pageList.List.Select(a => a.Id).ToList(); + //查询轨迹模版 + 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, TemplateId = b.Id }) + .ToListAsync(); var esTrackDetails = await _trackDetailsRepository.GetListAsync(orderIds); - if (!esTrackDetails.IsNullOrEmpty()) + pageList.List.ForEach(a => { - pageList.List.ForEach(a => + var esDetails = esTrackDetails?.Where(b => b.OrderId== a.Id).OrderByDescending(b => b.TrackTime); + var trackDetail = esDetails?.FirstOrDefault(); + if (trackDetail!=null) { - var esDetails = esTrackDetails.Where(b => b.OrderId== a.Id).OrderByDescending(b => b.TrackTime); - var trackDetail = esDetails.FirstOrDefault(); - if (trackDetail!=null) + if (trackDetail.TrackContent!=a.NewestTrackContent) { - if (trackDetail.TrackContent!=a.NewestTrackContent) - { - a.NewestTrackContent=trackDetail.TrackContent; - } - if (trackDetail.TrackEnContent!=a.NewestTrackEnContent) - { - a.NewestTrackEnContent=trackDetail.TrackEnContent; - } - if (trackDetail.TrackPlace!=a.NewestTrackPlace) - { - a.NewestTrackPlace=trackDetail.TrackPlace; - } - if (trackDetail.TrackTime!= a.NewestTrackTime) - { - a.NewestTrackTime=trackDetail.TrackTime; - } + a.NewestTrackContent=trackDetail.TrackContent; } - }); - } + if (trackDetail.TrackEnContent!=a.NewestTrackEnContent) + { + a.NewestTrackEnContent=trackDetail.TrackEnContent; + } + if (trackDetail.TrackPlace!=a.NewestTrackPlace) + { + a.NewestTrackPlace=trackDetail.TrackPlace; + } + if (trackDetail.TrackTime!= a.NewestTrackTime) + { + a.NewestTrackTime=trackDetail.TrackTime; + } + } + + a.TrackTemplateNames =trackTemplateList.Where(b => b.OrderId== a.Id).Select(a => a.Name).JoinAsString(","); + a.TrackTemplateIds = trackTemplateList.Where(b => b.OrderId== a.Id).Select(a => a.TemplateId).ToList(); + }); + } diff --git a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs index 5d4db71f..72cf57ba 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs @@ -101,6 +101,7 @@ public class TrackContentRepository : BasicRepository, ITrac .LeftJoin((a, b, c) => b.TrackTemplateId==c.Id&& c.IsDeleted==false) .WhereIF(!input.TrackCodes.IsNullOrEmpty(), (a, b, c) => input.TrackCodes.Contains(a.Code)) .WhereIF(input.SubSystemId>0, (a, b, c) => a.SubSystemId==input.SubSystemId) + .WhereIF(!input.TrackTemplateIds.IsNullOrEmpty(), (a, b, c) => input.TrackTemplateIds.Contains(c.Id)) .Where((a, b, c) => c.Id>0) .Select((a, b, c) => new GetTemplateContentAttributeValueVO {