Merge branch 'refs/heads/S06' into test
This commit is contained in:
commit
b0c026ffa7
@ -49,6 +49,7 @@ public class BatchUpsertTrackInput : OrderNosInfo
|
||||
|
||||
/// <summary>
|
||||
/// 数据来源:1外部服务商创建,2内部系统创建,3人工创建
|
||||
/// 批量新增时使用指定轨迹来源,更新时无需指定
|
||||
/// </summary>
|
||||
[Required]
|
||||
public int Source { get; set; }
|
||||
|
||||
@ -7,6 +7,9 @@ public class GetTrackOutput
|
||||
/// </summary>
|
||||
public string OrderNo { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹明细列表
|
||||
/// </summary>
|
||||
public List<TrackDetail> TrackDetails { get; set; } = new();
|
||||
}
|
||||
|
||||
@ -32,4 +35,70 @@ public class TrackDetail
|
||||
/// 是否对外
|
||||
/// </summary>
|
||||
public bool IsDisplay { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 客户是否可见
|
||||
/// </summary>
|
||||
public bool IsVisibility { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据来源:1外部服务商创建,2内部系统创建,3人工创建
|
||||
/// </summary>
|
||||
public int Source { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
public string? Remarks { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 附件集合
|
||||
/// </summary>
|
||||
public List<FileItemDto>? Files { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地(城市)
|
||||
/// </summary>
|
||||
public string? TrackPlaceCity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地(城市)Id
|
||||
/// </summary>
|
||||
public int? TrackPlaceCityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地(省/州)
|
||||
/// </summary>
|
||||
public string? TrackPlaceProvince { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地(省/州)Id
|
||||
/// </summary>
|
||||
public int? TrackPlaceProvinceId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地(国家/地区)
|
||||
/// </summary>
|
||||
public string? TrackPlaceNation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地(国家/地区)Id
|
||||
/// </summary>
|
||||
public int? TrackPlaceNationId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生地邮编
|
||||
/// </summary>
|
||||
public string? TrackPlacePostcode { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 预计到达时间
|
||||
/// </summary>
|
||||
public DateTime? EstimatedDeliveryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 目的地时区
|
||||
/// </summary>
|
||||
public float? DestinationTimeZone { get; set; }
|
||||
}
|
||||
|
||||
@ -26,4 +26,19 @@ public class GetAvailableContentOutput
|
||||
/// 是否对外
|
||||
/// </summary>
|
||||
public bool IsExternal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹来源
|
||||
/// </summary>
|
||||
public int? Source { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生时间
|
||||
/// </summary>
|
||||
public DateTime? TrackTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹发生时区
|
||||
/// </summary>
|
||||
public float? TrackTimeZone { get; set; }
|
||||
}
|
||||
|
||||
@ -172,6 +172,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
|
||||
tracks = await _trackDetailsEsRepository.GetDataByIds(@event.EsIds);
|
||||
orderIds = tracks.Select(m => m.OrderId).Distinct().ToList();
|
||||
@event.OrderIds = orderIds.ToArray();
|
||||
@event.TrackCodes = tracks.Select(x => x.TrackCode).Distinct().ToList();
|
||||
|
||||
// 外部api获取的轨迹不允许删除
|
||||
if (tracks.Any(m => m.Source == TrackSourceEnum.ExternalServiceProvide.GetHashCode()))
|
||||
@ -182,6 +183,9 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
|
||||
{
|
||||
await _trackDetailsEsRepository.DeleteTrackByIdAsync(item.Id, item.IndexName);
|
||||
}
|
||||
|
||||
//清理已经删除过的esid
|
||||
@event.EsIds = Array.Empty<string>();
|
||||
}
|
||||
else //原有逻辑,根据轨迹code和订单进行删除
|
||||
{
|
||||
@ -235,7 +239,7 @@ public class TrackDeleteEventHandler : ITransientDependency, ICapSubscribe
|
||||
OrderId = order.Id,
|
||||
OrderNo = order.OrderNo,
|
||||
OptionType = OrderOperationType.删除轨迹.ToString(),
|
||||
Content = tracks?.Where(m=>m.OrderId == order.Id)?.ToList().ToJson(),
|
||||
Content = tracks?.Where(m => m.OrderId == order.Id)?.ToList().ToJson(),
|
||||
CreateUserId = @event.OperationManId,
|
||||
CreateUserName = @event.OperationMan ?? "",
|
||||
CreateTime = DateTime.Now
|
||||
|
||||
@ -298,8 +298,6 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
||||
|
||||
if (track == null) continue; // 不存在不让改
|
||||
|
||||
//来源与外部服务商不允许修改
|
||||
if (track.Source == (int) TrackSourceEnum.ExternalServiceProvide) continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -398,9 +396,14 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
|
||||
}
|
||||
else
|
||||
{
|
||||
track.TrackPlace = @event.TrackPlace;
|
||||
track.TrackTime = @event.NewTrackTime ?? @event.TrackTime;
|
||||
track.TrackTimeZone = @event.TrackTimeZone;
|
||||
//外部轨迹,轨迹发生地,轨迹发生时间,轨迹发生时区,不允许更改
|
||||
if (track.Source != (int) TrackSourceEnum.ExternalServiceProvide)
|
||||
{
|
||||
track.TrackPlace = @event.TrackPlace;
|
||||
track.TrackTime = @event.NewTrackTime ?? @event.TrackTime;
|
||||
track.TrackTimeZone = @event.TrackTimeZone;
|
||||
}
|
||||
|
||||
track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
|
||||
? track.TrackTime
|
||||
: track.TrackTime.Subtract(TimeSpan.FromHours(track.TrackTimeZone));
|
||||
|
||||
@ -15,6 +15,7 @@ using SJZY.Track.Application.Contract.Services;
|
||||
using SJZY.Track.Application.Helpers;
|
||||
using SJZY.Track.Domain.Aggregates.OrderAggregate;
|
||||
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
|
||||
using SJZY.Track.Domain.Enums;
|
||||
using Volo.Abp.DependencyInjection;
|
||||
|
||||
namespace SJZY.Track.Application.Rabbit;
|
||||
@ -258,6 +259,22 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
|
||||
TrackTime = trackTime ?? DateTime.Now,
|
||||
TrackTimeZone = trackTimeZone ?? GlobalConst.NoneTrackTimeZone,
|
||||
IsAdd = true,
|
||||
//S06新增
|
||||
IsVisibility = false,
|
||||
Source = (int)TrackSourceEnum.ExternalServiceProvide,
|
||||
Remarks = GlobalConst.EmptyString,
|
||||
Files = null,
|
||||
Content = GlobalConst.EmptyString,
|
||||
EnStatus = GlobalConst.EmptyString,
|
||||
TrackPlaceCity = GlobalConst.EmptyString,
|
||||
TrackPlaceCityId = GlobalConst.NotExistId,
|
||||
TrackPlaceProvince = GlobalConst.EmptyString,
|
||||
TrackPlaceProvinceId = GlobalConst.NotExistId,
|
||||
TrackPlaceNation = GlobalConst.EmptyString,
|
||||
TrackPlaceNationId = GlobalConst.NotExistId,
|
||||
TrackPlacePostcode = GlobalConst.EmptyString,
|
||||
DestinationTimeZone = null,
|
||||
EstimatedDeliveryDate = null,
|
||||
};
|
||||
|
||||
await _capPublisher.PublishAsync(GlobalConst.TrackUpsertForRefreshSubscribe, trackUpsertEvent);
|
||||
@ -281,7 +298,26 @@ public class TrackRefreshEventHandler : ITransientDependency, IRabbitHandler
|
||||
OriginTrackDataHash = StringHelper.GetHash(JsonConvert.SerializeObject(trackToken)),
|
||||
OriginTrackContent = trackContent ?? GlobalConst.EmptyString,
|
||||
CreateUser = GlobalConst.SystemUser,
|
||||
CreateTime = DateTime.Now
|
||||
CreateTime = DateTime.Now,
|
||||
//来源轨迹内容,第一次新增的时候使用轨迹内容表提供的
|
||||
TrackStatus = GlobalConst.EmptyString,
|
||||
TrackStatusCode = GlobalConst.EmptyString,
|
||||
TrackContent = GlobalConst.EmptyString,
|
||||
TrackEnContent = GlobalConst.EmptyString,
|
||||
//S06新增轨迹明细字段
|
||||
IsVisibility = false,
|
||||
Source = (int) TrackSourceEnum.ExternalServiceProvide,
|
||||
Remarks = GlobalConst.EmptyString,
|
||||
Files = null,
|
||||
TrackPlaceCity = GlobalConst.EmptyString,
|
||||
TrackPlaceCityId = GlobalConst.NotExistId,
|
||||
TrackPlaceProvince = GlobalConst.EmptyString,
|
||||
TrackPlaceProvinceId = GlobalConst.NotExistId,
|
||||
TrackPlaceNation = GlobalConst.EmptyString,
|
||||
TrackPlaceNationId = GlobalConst.NotExistId,
|
||||
TrackPlacePostcode = GlobalConst.EmptyString,
|
||||
DestinationTimeZone = null,
|
||||
EstimatedDeliveryDate = null,
|
||||
};
|
||||
|
||||
track.ZeroTrackTime = Math.Abs(track.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
|
||||
|
||||
@ -62,7 +62,24 @@ public partial class TrackService
|
||||
TimeZone = Math.Abs(x.TrackTimeZone - GlobalConst.NoneTrackTimeZone) < 1
|
||||
? null
|
||||
: input.TimeZone ?? 8,
|
||||
IsDisplay = trackContentDic.TryGetValue(x.TrackCode, out var isExternal) && isExternal
|
||||
IsDisplay = trackContentDic.TryGetValue(x.TrackCode, out var isExternal) && isExternal,
|
||||
IsVisibility = x.IsVisibility,
|
||||
Source = x.Source,
|
||||
Remarks = x.Remarks,
|
||||
Files = x.Files?.Select(y => new FileItemDto
|
||||
{
|
||||
FileName = y.FileName,
|
||||
OssKey = y.OssKey
|
||||
}).ToList(),
|
||||
TrackPlaceCity = x.TrackPlaceCity,
|
||||
TrackPlaceCityId = x.TrackPlaceCityId,
|
||||
TrackPlaceProvince = x.TrackPlaceProvince,
|
||||
TrackPlaceProvinceId = x.TrackPlaceProvinceId,
|
||||
TrackPlaceNation = x.TrackPlaceNation,
|
||||
TrackPlaceNationId = x.TrackPlaceNationId,
|
||||
TrackPlacePostcode = x.TrackPlacePostcode,
|
||||
DestinationTimeZone = x.DestinationTimeZone,
|
||||
EstimatedDeliveryDate = x.EstimatedDeliveryDate
|
||||
}).ToList();
|
||||
|
||||
res.Add(item);
|
||||
|
||||
@ -266,13 +266,7 @@ public class TrackContentService : ApplicationService
|
||||
if (!item.IsAllowManuallyCreate && input.TrackOptionType == TrackOptionType.创建) //跳过不允许手动创建的轨迹内容
|
||||
continue;
|
||||
|
||||
if (!item.IsAllowManuallyUpdate && input.TrackOptionType == TrackOptionType.修改) //跳过不允许手动创建的轨迹内容
|
||||
continue;
|
||||
|
||||
if (!item.IsRepeatable && input.TrackOptionType == TrackOptionType.删除) //删除操作中跳过不重复的轨迹内容
|
||||
continue;
|
||||
|
||||
if (!item.IsAllowManuallyCreate && input.TrackOptionType == TrackOptionType.删除) //删除操作中跳过不允许手动创建的轨迹内容
|
||||
if (!item.IsAllowManuallyUpdate && input.TrackOptionType == TrackOptionType.修改) //跳过不允许手动修改的轨迹内容
|
||||
continue;
|
||||
|
||||
res.Data.Add(new GetAvailableContentOutput()
|
||||
@ -285,6 +279,42 @@ public class TrackContentService : ApplicationService
|
||||
});
|
||||
}
|
||||
|
||||
if (input.TrackOptionType == TrackOptionType.创建
|
||||
|| trackDetails == null
|
||||
|| trackDetails.Count == 0)
|
||||
{
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
//修改操作,查轨迹内容列表反映明细表数据,重新构造响应数据
|
||||
var matchContent = new List<GetAvailableContentOutput>();
|
||||
var contents = res.Data.Select(x => new
|
||||
{
|
||||
x.Id,
|
||||
x.IsExternal,
|
||||
x.Code
|
||||
});
|
||||
|
||||
foreach (var content in contents)
|
||||
{
|
||||
var match = trackDetails
|
||||
.Where(x => x.TrackCode == content.Code)
|
||||
.Select(matchItem => new GetAvailableContentOutput
|
||||
{
|
||||
IsExternal = content.IsExternal,
|
||||
Id = content.Id,
|
||||
EnContent = matchItem.TrackEnContent,
|
||||
Content = matchItem.TrackContent,
|
||||
Code = matchItem.TrackCode,
|
||||
TrackTime = matchItem.TrackTime,
|
||||
TrackTimeZone = matchItem.TrackTimeZone,
|
||||
Source = matchItem.Source
|
||||
});
|
||||
matchContent.AddRange(match);
|
||||
}
|
||||
|
||||
res.Data = matchContent;
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@ -61,7 +61,7 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
|
||||
public async Task<(int MainOrderId, int CustomId)> GetTrackOrderByProviderAndOrderNo(string serviceProvidrCode, string orderNo)
|
||||
{
|
||||
var orderList = await Context.Queryable<OrderEntity>()
|
||||
.LeftJoin<OrderPlatformNumberEntity>((a, b) => a.Id == b.OrderId && b.IsDeleted)
|
||||
.LeftJoin<OrderPlatformNumberEntity>((a, b) => a.Id == b.OrderId && b.IsDeleted == false)
|
||||
.Where((a, b) => a.OrderNo == orderNo
|
||||
|| (b.Platform == serviceProvidrCode && b.OrderNumber == orderNo))
|
||||
.Select((a, b) => new
|
||||
|
||||
Loading…
Reference in New Issue
Block a user