diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
index c82bf122..50572e48 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetOrderDetailsInput.cs
@@ -11,29 +11,34 @@
public class TrackOrderDetailDto
{
///
- /// 轨迹订单id
+ /// Id es主键
///
public int Id { get; set; }
+ ///
+ /// 轨迹订单id
+ ///
+ public int OrderId { set; get; }
+
///
/// 轨迹代码
///
- public string Code { get; set; }
+ public string? Code { get; set; }
///
/// 轨迹内容
///
- public string Content { get; set; }
+ public string? Content { get; set; }
///
/// 轨迹内容英文
///
- public string EnContent { get; set; }
+ public string? EnContent { get; set; }
///
/// 轨迹发生地
///
- public string TrackPlace { get; set; }
+ public string? TrackPlace { get; set; }
///
/// 轨迹发生时间
@@ -43,6 +48,6 @@
///
/// 轨迹发生时区
///
- public string TrackTimeZone { get; set; }
+ public string? TrackTimeZone { get; set; }
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs
index 578c31b2..7f6898d7 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/GetTrackInput.cs
@@ -1,3 +1,5 @@
+using System.ComponentModel.DataAnnotations;
+
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
public class GetTrackInput
@@ -5,6 +7,8 @@ public class GetTrackInput
///
/// 订单类型
///
+ [Required]
+ [Range(1, int.MaxValue)]
public int OrderType { get; set; }
///
@@ -14,12 +18,14 @@ public class GetTrackInput
///
/// 时区 +8 +8.25 -8.5 -9
+ /// 不传默认+8
///
- public float TimeZone { get; set; }
+ public float? TimeZone { get; set; } = 8;
///
/// 排序方式
///
+ [Required]
public SortMethod SortMethod { get; set; }
}
diff --git a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs
index 880c43a5..91ae6d11 100644
--- a/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs
+++ b/src/SJZY.Track.Application.Contract/Dtos/ProvideServices/UpsertOrderInput.cs
@@ -7,6 +7,7 @@ public class UpsertOrderInput : UpdateOrderInput
///
/// 客户id
///
+ [Required]
public int CustomId { get; set; }
}
diff --git a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs
index 27f73eda..dc814b49 100644
--- a/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs
+++ b/src/SJZY.Track.Application/AutoMapper/OrderAutoMapperProfile.cs
@@ -21,7 +21,8 @@ public class OrderAutoMapperProfile : Profile
CreateMap(MemberList.None);
CreateMap(MemberList.None);
CreateMap, UnifyPageResultDto>(MemberList.None);
- CreateMap(MemberList.None).ForMember(dest => dest.Id, opt => opt.MapFrom(m => m.OrderId))
+ CreateMap(MemberList.None)
+ .ForMember(dest => dest.Id, opt => opt.Ignore())
.ForMember(dest => dest.Code, opt => opt.MapFrom(m => m.TrackCode))
.ForMember(dest => dest.Content, opt => opt.MapFrom(m => m.TrackContent))
.ForMember(dest => dest.EnContent, opt => opt.MapFrom(m => m.TrackEnContent))
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs
index 73c08dd9..77805cf7 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderLinkService.cs
@@ -43,8 +43,8 @@ public class OrderLinkService : ApplicationService
if (input.LinkOrderNos.Count < 1 || input.LinkOrderType == 0) return true;
- // 单号去重
- input.LinkOrderNos = input.LinkOrderNos.Distinct().ToList();
+ // 单号去重,去空
+ input.LinkOrderNos = input.LinkOrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList();
// 解绑
if (!input.IsLink) return await UnLinkOrderAsync(input);
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs
index 226be0ef..ffb67836 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/OrderService.cs
@@ -2,6 +2,7 @@
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.Order;
+using SJZY.UserCenter.HttpApi.Services;
namespace SJZY.Track.Application.Services.ProvideServices;
@@ -42,7 +43,7 @@ public class OrderService : ApplicationService
}
order = ObjectMapper.Map(input);
- order.SubSystemId = 1;
+ order.SubSystemId = CurrentUserRequest.SubSystemId;
order.OrderTemplates = ObjectMapper.Map, List>(input.Templates!);
order.OrderFlights = ObjectMapper.Map, List>(input.FlightInfos!);
@@ -85,6 +86,11 @@ public class OrderService : ApplicationService
if (!trackDetails.IsNullOrEmpty())
{
var list = ObjectMapper.Map, List>(trackDetails);
+ int id = 1;
+ list.ForEach(a =>
+ {
+ a.Id = id++;
+ });
return list;
}
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs
index 96bb5de5..8b6fd2cc 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackQueryService.cs
@@ -22,7 +22,7 @@ public class TrackQueryService : ApplicationService
IProvideQueries provideQueries)
{
_trackDetailsRepository = trackDetailsRepository;
- _orderRepository=orderRepository;
+ _orderRepository = orderRepository;
_provideQueries = provideQueries;
}
@@ -44,7 +44,6 @@ public class TrackQueryService : ApplicationService
input.OrderNos = input.OrderNos.Distinct().ToList(); // 单号去重
var details = await _trackDetailsRepository.GetListAsync(input.OrderType, input.OrderNos);
- var isTurn = input.TimeZone != 0;
foreach (var group in details.GroupBy(x => x.OrderId))
{
var item = new GetTrackOutput();
@@ -57,8 +56,8 @@ public class TrackQueryService : ApplicationService
Status = x.TrackStatus,
Content = x.TrackContent,
Location = x.TrackPlace,
- Time = isTurn ? x.TrackTime.AddHours(input.TimeZone - x.TraceTimeZone) : x.TrackTime,
- TimeZone = isTurn ? input.TimeZone : x.TraceTimeZone
+ Time = x.TrackTime.AddHours(input.TimeZone!.Value - x.TraceTimeZone),
+ TimeZone = input.TimeZone!.Value
}).ToList();
res.Add(item);
@@ -69,43 +68,6 @@ public class TrackQueryService : ApplicationService
return res;
}
- #region 轨迹订单明细列表
- ///
- /// 根据轨迹订单id获取轨迹订单明细列表
- ///
- ///
- ///
- [HttpPost("/Track/GetDetails")]
- public async Task> GetOrderDetails(GetOrderDetailsInput input)
- {
- var trackDetails = await _trackDetailsRepository.GetListAsync(input.OrderId);
- if (!trackDetails.IsNullOrEmpty())
- {
- var list = ObjectMapper.Map, List>(trackDetails);
- return list;
- }
-
- return new List();
- }
- #endregion
-
- #region 轨迹订单分页
- ///
- /// 获取分页的轨迹订单
- ///
- ///
- ///
- [HttpPost("/Track/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
-
private async Task TrackDetailSort(List list, GetTrackInput input)
{
switch (input.SortMethod)
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
new file mode 100644
index 00000000..b0c86ec2
--- /dev/null
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -0,0 +1,74 @@
+using SJZY.Track.Application.Contract.Dtos.ProvideServices;
+using SJZY.Track.Domain.Aggregates.OrderAggregate;
+using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
+using SJZY.Track.Domain.Dtos.Order;
+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;
+
+ public TrackOrderService(
+ IOrderRepository orderRepository,
+ ITrackDetailsRepository trackDetailsRepository
+ )
+ {
+ this._orderRepository=orderRepository;
+ this._trackDetailsRepository=trackDetailsRepository;
+
+ }
+
+ #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);
+ int id = 1;
+ list.ForEach(a =>
+ {
+ a.Id = id++;
+ });
+ 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
+ }
+}
diff --git a/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs b/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs
index df09c551..34998b29 100644
--- a/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs
+++ b/src/SJZY.Track.Application/Services/TrackPull/TrackPullService.cs
@@ -222,7 +222,7 @@ public class TrackPullService : ApplicationService, ITransientDependency
throw new BusinessException(message: _stringLocalizer["IsTrackPullContentValueAny"]);
else if (!input.TrackKeywords.IsNullOrEmpty())
{
- Expression> trackKeywordExp = _ => true;
+ Expression> trackKeywordExp = _ => false;
input.TrackKeywords!.ForEach(item => { trackKeywordExp = trackKeywordExp.Or(x => SqlFunc.SplitIn(x.TrackKeyword, item)); });
if (await _trackPullConfigRepository.IsContentAnyAsync(isContentAnyExp.And(trackKeywordExp)))
diff --git a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs
index 064f9445..a44a15bc 100644
--- a/src/SJZY.Track.Repository/Queries/ProvideQueries.cs
+++ b/src/SJZY.Track.Repository/Queries/ProvideQueries.cs
@@ -56,7 +56,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
.OrderBy(a => a.Sort)
.Select((a, b) => new OrderedTrackCodeDto
{
- TemplateId = a.Id,
+ TemplateId = a.TrackTemplateId,
Code = b.Code
})
.ToListAsync();
diff --git a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
index 728a0606..b1bb6476 100644
--- a/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/OrderRepository.cs
@@ -61,17 +61,16 @@ public class OrderRepository : BasicRepository, IOrderRepository, I
public async Task> GetLinkedOrdersAsync(int orderId)
{
return await Context.Queryable()
- .LeftJoin((a, b) => a.Id == b.OrderId)
- .LeftJoin((a, b, c) => b.LinkOrderId == c.Id)
- .Where(a => a.Id == orderId)
- .Select((a, b, c) => new LinkedOrderVO
+ .LeftJoin((a, b) => a.LinkOrderId == b.Id)
+ .Where(a => a.OrderId == orderId)
+ .Select((a, b) => new LinkedOrderVO
{
- OrderId = c.Id,
- OrderType = c.OrderType,
- OrderNo = c.OrderNo,
- SubSystemId = c.SubSystemId,
- IsPushCompleted = c.IsPushCompleted,
- CustomId = c.CustomId
+ OrderId = b.Id,
+ OrderType = b.OrderType,
+ OrderNo = b.OrderNo,
+ SubSystemId = b.SubSystemId,
+ IsPushCompleted = b.IsPushCompleted,
+ CustomId = b.CustomId
})
.ToListAsync();
}
diff --git a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
index 98a4d7d3..cf78c66f 100644
--- a/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/TrackDetailsRepository.cs
@@ -44,7 +44,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract(index.Id, u => u
.Index(index.IndexName)
.Doc(index)
- //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
+ //.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
);
if (!r.IsValid)
{
- LogHelper.Error($"轨迹数据更新失败,原因:{r.DebugInformation}。");
+ LogHelper.Error($"轨迹更新失败,原因:{r.DebugInformation}。");
}
}
}
@@ -68,6 +68,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract(x => x
.Source(s => s.Includes(fd => fd
+ .Field(f => f.OrderNo)
.Field(f => f.TrackStatus)
.Field(f => f.TrackCode)
.Field(f => f.TrackContent)
@@ -89,22 +90,26 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract?> GetListAsync(int orderId)
{
- var data = await Context.SearchAsync(x => x.Query(q => q.Term(t => t.OrderId, orderId)).Size(1000)
- .Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending)));
+ var data = await Context.SearchAsync(x => x.Query(q => q.Term(t => t.OrderId, orderId))
+ .Size(1000)
+ .Sort(s => s.Field(f => f.TrackTime, SortOrder.Descending)));
return data?.Documents?.ToList();
}
public async Task DeleteTrackAsync(int orderId, List trackCodes)
{
- await Context.UpdateByQueryAsync(x => x
+ var r = await Context.UpdateByQueryAsync(x => x
.Query(
q =>
q.Term(t => t.OrderId, orderId)
- && q.Terms(t => t.Field(f => f.TrackCode).Terms(trackCodes)))
+ && q.Terms(t => t.Field(f => f.TrackCode.Suffix("keyword")).Terms(trackCodes)))
.Script(s => s
.Source("ctx._source.isDeleted = true"))
);
+
+ if (!r.IsValid)
+ throw new Exception($"轨迹数据删除失败,原因:{r.DebugInformation}");
}
public async Task<(List list, long total)> GetListAsync(TrackDetailsQueryInput input)