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; using System.Text; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; namespace SJZY.Track.Application.Services.TrackOrders { [ApiExplorerSettings(GroupName = "轨迹订单")] [Route("/Track/Order")] public class TrackOrderService : ApplicationService, ITransientDependency { private readonly IOrderRepository _orderRepository; private readonly ITrackDetailsRepository _trackDetailsRepository; private readonly ITrackContentRepository _trackContentRepository; public TrackOrderService( IOrderRepository orderRepository, ITrackDetailsRepository trackDetailsRepository, ITrackContentRepository trackContentRepository ) { this._orderRepository=orderRepository; this._trackDetailsRepository=trackDetailsRepository; this._trackContentRepository=trackContentRepository; } #region 轨迹订单明细 /// /// 根据轨迹订单id获取轨迹订单明细列表 /// /// /// [HttpPost("GetDetails")] public async Task> GetOrderDetails(GetOrderDetailsInput input) { var trackDetails = await _trackDetailsRepository.GetListAsync(input.OrderId); 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; } return new List(); } #endregion #region 轨迹订单列表 /// /// 获取分页的轨迹订单 /// /// /// [HttpPost("GetTrackOrderList")] public async Task> GetPageTrackOrder(GetPageTrackOrderInput input) { var vo = ObjectMapper.Map(input); var pageList = await _orderRepository.GetPageTrackOrder(vo); var pageResultDto = ObjectMapper.Map, UnifyPageResultDto>(pageList); return pageResultDto; } #endregion } }