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
}
}