移除自定义 CAP / Rabbit 相关代码 事件处理迁到 Messaging 目录 新增 TrackUpsertForRefreshEvent、Directory.Build.targets、Fake.Local.props #7
@ -46,6 +46,111 @@ public class GetPageTrackOrderInput : PageInfoInput
|
||||
/// 创建时间截止
|
||||
/// </summary>
|
||||
public DateTime? CreateTimeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 尾程单号(支持逗号分隔多值,等值匹配)
|
||||
/// </summary>
|
||||
public string? TrackNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 其他单号(支持逗号分隔多值,等值匹配)
|
||||
/// </summary>
|
||||
public string? OtherNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 销售产品
|
||||
/// </summary>
|
||||
public string? Product { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 渠道
|
||||
/// </summary>
|
||||
public string? Channel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// API 编码 / 服务商代码
|
||||
/// </summary>
|
||||
public string? ApiCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 国家编码
|
||||
/// </summary>
|
||||
public string? CountryCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 州省
|
||||
/// </summary>
|
||||
public string? Province { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 城市
|
||||
/// </summary>
|
||||
public string? City { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮编
|
||||
/// </summary>
|
||||
public string? Postcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮箱
|
||||
/// </summary>
|
||||
public string? Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹状态
|
||||
/// </summary>
|
||||
public string? NewestTrackStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹内容
|
||||
/// </summary>
|
||||
public string? NewestTrackContent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹内容英文
|
||||
/// </summary>
|
||||
public string? NewestTrackEnContent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹发生地
|
||||
/// </summary>
|
||||
public string? NewestTrackPlace { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹时间开始
|
||||
/// </summary>
|
||||
public DateTime? NewestTrackTimeStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹时间截止
|
||||
/// </summary>
|
||||
public DateTime? NewestTrackTimeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹时区
|
||||
/// </summary>
|
||||
public float? NewestTrackTimeZone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否完结
|
||||
/// </summary>
|
||||
public bool? IsFinish { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 预计到达时间开始
|
||||
/// </summary>
|
||||
public DateTime? EstimatedDeliveryDateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 预计到达时间截止
|
||||
/// </summary>
|
||||
public DateTime? EstimatedDeliveryDateEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 目的地时区
|
||||
/// </summary>
|
||||
public float? DestinationTimeZone { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -41,6 +41,111 @@ public class GetPageTrackOrderInputVO : PageInfoInput
|
||||
/// 创建时间截止
|
||||
/// </summary>
|
||||
public DateTime? CreateTimeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 尾程单号(支持逗号分隔多值,等值匹配)
|
||||
/// </summary>
|
||||
public string? TrackNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 其他单号(支持逗号分隔多值,等值匹配)
|
||||
/// </summary>
|
||||
public string? OtherNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 销售产品
|
||||
/// </summary>
|
||||
public string? Product { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 渠道
|
||||
/// </summary>
|
||||
public string? Channel { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// API 编码 / 服务商代码
|
||||
/// </summary>
|
||||
public string? ApiCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 国家编码
|
||||
/// </summary>
|
||||
public string? CountryCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 州省
|
||||
/// </summary>
|
||||
public string? Province { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 城市
|
||||
/// </summary>
|
||||
public string? City { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮编
|
||||
/// </summary>
|
||||
public string? Postcode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 邮箱
|
||||
/// </summary>
|
||||
public string? Email { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹状态
|
||||
/// </summary>
|
||||
public string? NewestTrackStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹内容
|
||||
/// </summary>
|
||||
public string? NewestTrackContent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹内容英文
|
||||
/// </summary>
|
||||
public string? NewestTrackEnContent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹发生地
|
||||
/// </summary>
|
||||
public string? NewestTrackPlace { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹时间开始
|
||||
/// </summary>
|
||||
public DateTime? NewestTrackTimeStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹时间截止
|
||||
/// </summary>
|
||||
public DateTime? NewestTrackTimeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最新轨迹时区
|
||||
/// </summary>
|
||||
public float? NewestTrackTimeZone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否完结
|
||||
/// </summary>
|
||||
public bool? IsFinish { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 预计到达时间开始
|
||||
/// </summary>
|
||||
public DateTime? EstimatedDeliveryDateStart { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 预计到达时间截止
|
||||
/// </summary>
|
||||
public DateTime? EstimatedDeliveryDateEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 目的地时区
|
||||
/// </summary>
|
||||
public float? DestinationTimeZone { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -19,56 +19,14 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
||||
}
|
||||
public async Task<PagedResult<TrackOrderVO>> GetTrackOrderPagedList(GetPageTrackOrderInputVO input)
|
||||
{
|
||||
//查询完去重
|
||||
PagedResult<TrackOrderVO> pageList;
|
||||
//没传递单号时
|
||||
if (input.OrderNos.IsNullOrEmpty())
|
||||
{
|
||||
pageList = await Context.Queryable<OrderEntity>()
|
||||
.WhereIF(!input.AppKey.IsNullOrWhiteSpace(), a => a.AppKey == input.AppKey)
|
||||
.WhereIF(input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime >= input.CreateTimeStart && a.CreateTime <= input.CreateTimeEnd)
|
||||
.WhereIF(input.CreateTimeStart.HasValue && (!input.CreateTimeEnd.HasValue),
|
||||
a => a.CreateTime >= input.CreateTimeStart)
|
||||
.WhereIF((!input.CreateTimeStart.HasValue) && input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime <= input.CreateTimeEnd)
|
||||
.WhereIF(!input.Customer.IsNullOrWhiteSpace(), a => a.Customer.Contains(input.Customer!))
|
||||
.WhereIF(input.TrackOrderType > 0, a => a.OrderType == input.TrackOrderType)
|
||||
.WhereIF(input.TabType > 0, a => a.QuestionType == input.TabType)
|
||||
.WhereIF(input.TabType == TrackProblemType.Warn, a => !a.IsCompleted)
|
||||
pageList = await ApplyTrackOrderListFilters(Context.Queryable<OrderEntity>(), input)
|
||||
.OrderByDescending(a => a.CreateTime)
|
||||
.Select(a => new TrackOrderVO
|
||||
{
|
||||
Id = a.Id,
|
||||
OrderNumber = a.OrderNo,
|
||||
OrderType = a.OrderType,
|
||||
QuestionType = a.QuestionType,
|
||||
Customer = a.Customer,
|
||||
NewestTrackStatus = a.LatestTrackStatus,
|
||||
NewestTrackContent = a.LatestTrackContent,
|
||||
NewestTrackEnContent = a.LatestTrackEnContent,
|
||||
NewestTrackPlace = a.LatestTrackPlace,
|
||||
NewestTrackTime = a.LatestTrackTime,
|
||||
NewestTrackTimeZone = a.LatestTrackTimeZone,
|
||||
IsFinish = a.IsCompleted,
|
||||
CreateTime = a.CreateTime,
|
||||
AppKey = a.AppKey,
|
||||
DestinationTimeZone = a.DestinationTimeZone,
|
||||
EstimatedDeliveryDate = a.EstimatedDeliveryDate,
|
||||
TrackNo = a.TrackNo,
|
||||
OtherNo = a.ThirdPartyOrderNumber,
|
||||
Channel = a.Channel,
|
||||
Product = a.ProductCode,
|
||||
ApiCode = a.ServiceProviderCode,
|
||||
CountryCode = a.ArrivalCountry,
|
||||
Province = a.ArrivalProvince,
|
||||
Postcode = a.ArrivalPostCode,
|
||||
City = a.ArrivalCity,
|
||||
Email = a.ArrivalEmail
|
||||
})
|
||||
.Select(TrackOrderListSelector)
|
||||
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
||||
}
|
||||
//传递单号时
|
||||
else
|
||||
{
|
||||
var orderNos = input.OrderNos!.Distinct().ToList();
|
||||
@ -89,27 +47,29 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
||||
orderHashset.UnionWith(orderIdsForThirdParty);
|
||||
orderIds = orderHashset.ToList();
|
||||
|
||||
//没有任何单
|
||||
if (orderIds.Count == 0)
|
||||
{
|
||||
return new PagedResult<TrackOrderVO>();
|
||||
}
|
||||
|
||||
pageList = await Context.Queryable<OrderEntity>()
|
||||
.Where(a => orderIds.Contains(a.Id))
|
||||
.WhereIF(!input.AppKey.IsNullOrWhiteSpace(), a => a.AppKey == input.AppKey)
|
||||
.WhereIF(input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime >= input.CreateTimeStart && a.CreateTime <= input.CreateTimeEnd)
|
||||
.WhereIF(input.CreateTimeStart.HasValue && (!input.CreateTimeEnd.HasValue),
|
||||
a => a.CreateTime >= input.CreateTimeStart)
|
||||
.WhereIF((!input.CreateTimeStart.HasValue) && input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime <= input.CreateTimeEnd)
|
||||
.WhereIF(!input.Customer.IsNullOrWhiteSpace(), a => a.Customer.Contains(input.Customer!))
|
||||
.WhereIF(input.TrackOrderType > 0, a => a.OrderType == input.TrackOrderType)
|
||||
.WhereIF(input.TabType > 0, a => a.QuestionType == input.TabType)
|
||||
.WhereIF(input.TabType == TrackProblemType.Warn, a => !a.IsCompleted)
|
||||
pageList = await ApplyTrackOrderListFilters(
|
||||
Context.Queryable<OrderEntity>().Where(a => orderIds.Contains(a.Id)), input)
|
||||
.OrderByDescending(a => a.CreateTime)
|
||||
.Select(a => new TrackOrderVO
|
||||
.Select(TrackOrderListSelector)
|
||||
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
||||
}
|
||||
|
||||
pageList.Items.ForEach(x =>
|
||||
{
|
||||
x.OrderTypeName = x.OrderType.GetDescription();
|
||||
x.QuestionTypeName = x.QuestionType.GetDescription();
|
||||
});
|
||||
|
||||
return pageList;
|
||||
}
|
||||
|
||||
private static System.Linq.Expressions.Expression<Func<OrderEntity, TrackOrderVO>> TrackOrderListSelector =>
|
||||
a => new TrackOrderVO
|
||||
{
|
||||
Id = a.Id,
|
||||
OrderNumber = a.OrderNo,
|
||||
@ -137,18 +97,80 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
||||
Postcode = a.ArrivalPostCode,
|
||||
City = a.ArrivalCity,
|
||||
Email = a.ArrivalEmail
|
||||
})
|
||||
.ToPagedListAsync(input.PageIndex, input.PageSize);
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 表头筛选:客户/单号/产品/渠道/轨迹内容等
|
||||
/// </summary>
|
||||
private static ISugarQueryable<OrderEntity> ApplyTrackOrderListFilters(
|
||||
ISugarQueryable<OrderEntity> query,
|
||||
GetPageTrackOrderInputVO input)
|
||||
{
|
||||
var trackNos = SplitMultiValues(input.TrackNo);
|
||||
var otherNos = SplitMultiValues(input.OtherNo);
|
||||
|
||||
query = query
|
||||
.WhereIF(!input.AppKey.IsNullOrWhiteSpace(), a => a.AppKey == input.AppKey)
|
||||
.WhereIF(input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime >= input.CreateTimeStart && a.CreateTime <= input.CreateTimeEnd)
|
||||
.WhereIF(input.CreateTimeStart.HasValue && !input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime >= input.CreateTimeStart)
|
||||
.WhereIF(!input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue,
|
||||
a => a.CreateTime <= input.CreateTimeEnd)
|
||||
.WhereIF(!input.Customer.IsNullOrWhiteSpace(), a => a.Customer.Contains(input.Customer!))
|
||||
.WhereIF(input.TrackOrderType > 0, a => a.OrderType == input.TrackOrderType)
|
||||
.WhereIF(input.TabType > 0, a => a.QuestionType == input.TabType)
|
||||
.WhereIF(input.TabType == TrackProblemType.Warn, a => !a.IsCompleted)
|
||||
.WhereIF(trackNos.Count == 1, a => a.TrackNo.Contains(trackNos[0]))
|
||||
.WhereIF(trackNos.Count > 1, a => trackNos.Contains(a.TrackNo))
|
||||
.WhereIF(otherNos.Count == 1, a => a.ThirdPartyOrderNumber != null && a.ThirdPartyOrderNumber.Contains(otherNos[0]))
|
||||
.WhereIF(otherNos.Count > 1, a => a.ThirdPartyOrderNumber != null && otherNos.Contains(a.ThirdPartyOrderNumber))
|
||||
.WhereIF(!input.Product.IsNullOrWhiteSpace(), a => a.ProductCode != null && a.ProductCode.Contains(input.Product!))
|
||||
.WhereIF(!input.Channel.IsNullOrWhiteSpace(), a => a.Channel != null && a.Channel.Contains(input.Channel!))
|
||||
.WhereIF(!input.ApiCode.IsNullOrWhiteSpace(),
|
||||
a => a.ServiceProviderCode != null && a.ServiceProviderCode.Contains(input.ApiCode!))
|
||||
.WhereIF(!input.CountryCode.IsNullOrWhiteSpace(), a => a.ArrivalCountry.Contains(input.CountryCode!))
|
||||
.WhereIF(!input.Province.IsNullOrWhiteSpace(), a => a.ArrivalProvince != null && a.ArrivalProvince.Contains(input.Province!))
|
||||
.WhereIF(!input.City.IsNullOrWhiteSpace(), a => a.ArrivalCity.Contains(input.City!))
|
||||
.WhereIF(!input.Postcode.IsNullOrWhiteSpace(),
|
||||
a => a.ArrivalPostCode != null && a.ArrivalPostCode.Contains(input.Postcode!))
|
||||
.WhereIF(!input.Email.IsNullOrWhiteSpace(), a => a.ArrivalEmail != null && a.ArrivalEmail.Contains(input.Email!))
|
||||
.WhereIF(!input.NewestTrackStatus.IsNullOrWhiteSpace(),
|
||||
a => a.LatestTrackStatus != null && a.LatestTrackStatus.Contains(input.NewestTrackStatus!))
|
||||
.WhereIF(!input.NewestTrackContent.IsNullOrWhiteSpace(),
|
||||
a => a.LatestTrackContent != null && a.LatestTrackContent.Contains(input.NewestTrackContent!))
|
||||
.WhereIF(!input.NewestTrackEnContent.IsNullOrWhiteSpace(),
|
||||
a => a.LatestTrackEnContent != null && a.LatestTrackEnContent.Contains(input.NewestTrackEnContent!))
|
||||
.WhereIF(!input.NewestTrackPlace.IsNullOrWhiteSpace(),
|
||||
a => a.LatestTrackPlace != null && a.LatestTrackPlace.Contains(input.NewestTrackPlace!))
|
||||
.WhereIF(input.NewestTrackTimeStart.HasValue && input.NewestTrackTimeEnd.HasValue,
|
||||
a => a.LatestTrackTime >= input.NewestTrackTimeStart && a.LatestTrackTime <= input.NewestTrackTimeEnd)
|
||||
.WhereIF(input.NewestTrackTimeStart.HasValue && !input.NewestTrackTimeEnd.HasValue,
|
||||
a => a.LatestTrackTime >= input.NewestTrackTimeStart)
|
||||
.WhereIF(!input.NewestTrackTimeStart.HasValue && input.NewestTrackTimeEnd.HasValue,
|
||||
a => a.LatestTrackTime <= input.NewestTrackTimeEnd)
|
||||
.WhereIF(input.NewestTrackTimeZone.HasValue, a => a.LatestTrackTimeZone == input.NewestTrackTimeZone)
|
||||
.WhereIF(input.IsFinish.HasValue, a => a.IsCompleted == input.IsFinish.Value)
|
||||
.WhereIF(input.EstimatedDeliveryDateStart.HasValue && input.EstimatedDeliveryDateEnd.HasValue,
|
||||
a => a.EstimatedDeliveryDate >= input.EstimatedDeliveryDateStart &&
|
||||
a.EstimatedDeliveryDate <= input.EstimatedDeliveryDateEnd)
|
||||
.WhereIF(input.EstimatedDeliveryDateStart.HasValue && !input.EstimatedDeliveryDateEnd.HasValue,
|
||||
a => a.EstimatedDeliveryDate >= input.EstimatedDeliveryDateStart)
|
||||
.WhereIF(!input.EstimatedDeliveryDateStart.HasValue && input.EstimatedDeliveryDateEnd.HasValue,
|
||||
a => a.EstimatedDeliveryDate <= input.EstimatedDeliveryDateEnd)
|
||||
.WhereIF(input.DestinationTimeZone.HasValue, a => a.DestinationTimeZone == input.DestinationTimeZone);
|
||||
|
||||
return query;
|
||||
}
|
||||
|
||||
//填充数描述信息
|
||||
pageList.Items.ForEach(x =>
|
||||
private static List<string> SplitMultiValues(string? raw)
|
||||
{
|
||||
x.OrderTypeName = x.OrderType.GetDescription();
|
||||
x.QuestionTypeName = x.QuestionType.GetDescription();
|
||||
});
|
||||
|
||||
return pageList;
|
||||
if (raw.IsNullOrWhiteSpace()) return new List<string>();
|
||||
return raw!
|
||||
.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
|
||||
.Where(x => !string.IsNullOrWhiteSpace(x))
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public async Task<(int MainOrderId, string OrderNo, string Customer)> GetTrackOrderByProviderAndOrderNo(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user