diff --git a/src/SJZY.Track.Api/appsettings.json b/src/SJZY.Track.Api/appsettings.json index d69cb0c1..676973d6 100644 --- a/src/SJZY.Track.Api/appsettings.json +++ b/src/SJZY.Track.Api/appsettings.json @@ -5,7 +5,7 @@ "Apollo": { "AppId": "SJZY.Track.Configuration", "Env": "DEV", - "Namespace": "Test", + "Namespace": "Dev", "MetaServer": "http://apollo-service-test-apollo-configservice.apollo.svc.cluster.local:8080", "ConfigServer": [ "http://apollo-service-test-apollo-configservice.apollo.svc.cluster.local:8080" ] } diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs index 50572e48..ca1e5ee8 100644 --- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs +++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs @@ -6,6 +6,11 @@ /// 轨迹订单id /// public int OrderId { get; set; } + + /// + /// 子系统id + /// + public int SubSystemId { get; set; } } public class TrackOrderDetailDto @@ -49,5 +54,20 @@ /// 轨迹发生时区 /// public string? TrackTimeZone { get; set; } + + /// + /// 时区的值 + /// + public float TrackTimeZoneValue { get; set; } + + /// + /// 是否可删 + /// + public bool IsCanDelete { get; set; } + + /// + /// 是否对外 + /// + public bool IsExternal { 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 b0c86ec2..9c6457fe 100644 --- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs +++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs @@ -1,7 +1,9 @@ using SJZY.Track.Application.Contract.Dtos.ProvideServices; using SJZY.Track.Domain.Aggregates.OrderAggregate; +using SJZY.Track.Domain.Aggregates.TrackContentAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Dtos.Order; +using SJZY.Track.Domain.Dtos.TrackTemplate; using System; using System.Collections.Generic; using System.Linq; @@ -17,19 +19,20 @@ namespace SJZY.Track.Application.Services.TrackOrders { private readonly IOrderRepository _orderRepository; private readonly ITrackDetailsRepository _trackDetailsRepository; + private readonly ITrackContentRepository _trackContentRepository; public TrackOrderService( IOrderRepository orderRepository, - ITrackDetailsRepository trackDetailsRepository + ITrackDetailsRepository trackDetailsRepository, + ITrackContentRepository trackContentRepository ) { this._orderRepository=orderRepository; this._trackDetailsRepository=trackDetailsRepository; - + this._trackContentRepository=trackContentRepository; } #region 轨迹订单明细 - /// /// 根据轨迹订单id获取轨迹订单明细列表 /// @@ -42,10 +45,40 @@ 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 trackContents = await _trackContentRepository.GetTrackContentAttributeValue(new GetTemplateContentAttributeValueInputVO + { + SubSystemId =input.SubSystemId, + TrackCodes=trackCodes + }); + int id = 1; list.ForEach(a => { a.Id = id++; + var trackContent = trackContents.FirstOrDefault(a => a.SubSystemId==input.SubSystemId&& a.TrackCode==a.TrackCode); + if (trackContent!=null) + { + a.IsCanDelete=trackContent.IsCanDelete; + a.IsExternal = trackContent.IsExternal; + } + a.TrackTimeZoneValue=8f; + if (a.TrackTimeZoneValue==0) + { + a.TrackTimeZone=$"GTM{" "}+00:00"; + } + else + { + + // 将小数形式的小时转换为时区偏移量 + int hours = (int)a.TrackTimeZoneValue; // 提取整数部分作为小时 + int minutes = (int)((a.TrackTimeZoneValue - hours) * 60); // 将小数部分乘以 60 转换为分钟 + TimeSpan offset = new TimeSpan(hours, minutes, 0); + string timeZoneStr = offset.ToString(); + string flag = a.TrackTimeZoneValue>0f ? "+" : ""; + a.TrackTimeZone = $"GTM{" "}{flag}{timeZoneStr.RemovePostFix(":00")}"; + } }); return list; } diff --git a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs index 511d4feb..400b7363 100644 --- a/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs +++ b/src/SJZY.Track.Domain/Aggregates/TrackContentAggregate/ITrackContentRepository.cs @@ -1,4 +1,5 @@ using SJZY.Track.Domain.Dtos.TrackContents; +using SJZY.Track.Domain.Dtos.TrackTemplate; namespace SJZY.Track.Domain.Aggregates.TrackContentAggregate; @@ -24,4 +25,5 @@ public interface ITrackContentRepository : IBasicRepository Task UpdateMapAsync(Expression> columns, Expression> whereExpression); Task GetTemplateIsExist(int trackContentId); + Task> GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input); } \ No newline at end of file diff --git a/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs new file mode 100644 index 00000000..1ba46bf4 --- /dev/null +++ b/src/SJZY.Track.Domain/Dtos/TrackTemplate/GetTemplateContentAttributeValueInputVO.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SJZY.Track.Domain.Dtos.TrackTemplate +{ + public class GetTemplateContentAttributeValueInputVO + { + /// + /// 子系统id + /// + public int SubSystemId { get; set; } + + /// + /// 轨迹代码 + /// + public List? TrackCodes { get; set; } + + ///// + ///// 订单id + ///// + //public int OrderId { get; set; } + } + + public class GetTemplateContentAttributeValueVO + { + /// + /// 轨迹内容id + /// + public int TrackContenId { get; set; } + + /// + /// 模版id + /// + public int TrackTemplateId { get; set; } + + /// + /// 轨迹内容代码 + /// + public string TrackCode { get; set; } + + /// + /// 子系统id + /// + public int SubSystemId { get; set; } + + /// + /// 是否可删 + /// + public bool IsCanDelete { get; set; } + + /// + /// 是否对外 + /// + public bool IsExternal { get; set; } + } +} diff --git a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs index b1a0cda0..5d4db71f 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackContentRepository.cs @@ -3,6 +3,7 @@ using SJZY.Track.Domain.Aggregates.TrackFlagAggregate; using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate; using SJZY.Track.Domain.Dtos.TrackContents; +using SJZY.Track.Domain.Dtos.TrackTemplate; using SJZY.Track.Domain.VEntities; using System.Linq; using System.Linq.Expressions; @@ -89,6 +90,31 @@ public class TrackContentRepository : BasicRepository, ITrac return pagedList; } + /// + /// 获取轨迹内容属性值 + /// + /// + public async Task> GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input) + { + var list = await Context.Queryable() + .LeftJoin((a, b) => a.Id==b.TrackContentId&& b.TrackTemplateId>0 && b.IsDeleted==false) + .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) + .Where((a, b, c) => c.Id>0) + .Select((a, b, c) => new GetTemplateContentAttributeValueVO + { + IsCanDelete=b.IsCanDelete, + IsExternal=b.IsExternal, + SubSystemId= a.SubSystemId, + TrackCode= a.Code, + TrackContenId= a.Id, + TrackTemplateId=c.Id + }).ToListAsync(); + + return list; + } + /// /// 获取轨迹模版是否存在 /// @@ -115,6 +141,8 @@ public class TrackContentRepository : BasicRepository, ITrac return false; } + + public async Task> GetMapPageAsync(GetTrackContentMapPageInputVO input) { return await Context.Queryable() diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs index cf78c66f..31d9fc36 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs @@ -52,7 +52,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract(index.Id, u => u .Index(index.IndexName) .Doc(index) - //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见 + //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见 ); if (!r.IsValid) @@ -90,7 +90,9 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract?> GetListAsync(int orderId) { - var data = await Context.SearchAsync(x => x.Query(q => q.Term(t => t.OrderId, orderId)) + var data = await Context.SearchAsync(x => x.Query(q => q.Term(t => t.OrderId, orderId) + && q.Term(a => a.Field(g => g.IsDeleted).Value(false)) + ) .Size(1000) .Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending))); diff --git a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs index 3bb1cfd9..21b72d53 100644 --- a/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs +++ b/src/SJZY.Track.Repository/Repositories/TrackTemplateRepository.cs @@ -65,6 +65,17 @@ public class TrackTemplateRepository : BasicRepository, ITr return pagedList; } + /// + /// 获取轨迹内容属性值 + /// + /// + public async Task GetTrackContentAttributeValue(GetTemplateContentAttributeValueInputVO input) + { + + + return null; + } + /// public async Task> GetContentPageAsync( GetTrackTemplateContentPageInputVO input)