fix 轨迹处理循环依赖问题、模板明细对外显示问题

This commit is contained in:
李鹏军 2024-03-06 10:26:07 +08:00
parent 2b299fb709
commit 0b224b8379
7 changed files with 39 additions and 8 deletions

View File

@ -28,4 +28,9 @@ public class TrackUpsertEvent : UpsertTrackInput
/// 上游子系统id
/// </summary>
public int UpSubSystemId { get; set; }
/// <summary>
/// 已经处理过的订单
/// </summary>
public List<int> Visited { get; set; } = new();
}

View File

@ -32,6 +32,9 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
[CapSubscribe(GlobalConst.TrackUpsertSubscribe)]
public async Task ConsumerAsync(TrackUpsertEvent @event)
{
if (@event.Visited.Contains(@event.OrderId)) return;
@event.Visited.Add(@event.OrderId);
// 不同子系统需要做内容映射
if (@event.UpSubSystemId != 0 && @event.UpSubSystemId != @event.SubSystemId)
{

View File

@ -43,8 +43,10 @@ public class OrderLinkService : ApplicationService
if (input.LinkOrderNos.Count < 1 || input.LinkOrderType == 0) return true;
// 单号去重,去空
input.LinkOrderNos = input.LinkOrderNos.Where(x => !x.IsNullOrWhiteSpace()).Distinct().ToList();
// 单号去重,去空,去自己
input.LinkOrderNos = input.LinkOrderNos
.Where(x => !x.IsNullOrWhiteSpace() && x != input.OrderNo)
.Distinct().ToList();
// 解绑
if (!input.IsLink) return await UnLinkOrderAsync(input);
@ -78,6 +80,8 @@ public class OrderLinkService : ApplicationService
LinkOrderType = input.LinkOrderType
}).ToList());
// todo:补轨迹
return true;
}

View File

@ -1,7 +1,6 @@
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 SJZY.Track.Domain.Queries;
namespace SJZY.Track.Application.Services.ProvideServices;
@ -91,7 +90,8 @@ public class TrackQueryService : ApplicationService
foreach (var orderTemplate in orderTemplates.Where(x => x.OrderNo == item.OrderNo))
{
codes.AddRange(templateContent
.Where(t => t.TemplateId == orderTemplate.TemplateId)
.Where(t => t.TemplateId == orderTemplate.TemplateId) // 按模板
.Where(t => t.IsExternal) // 过滤不对外的
.Select(t => t.Code));
}

View File

@ -0,0 +1,13 @@
using FluentValidation;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
namespace SJZY.Track.Application.Validations.ProviderService;
public class UpsertTrackInputValidation : AbstractValidator<UpsertTrackInput>, IValidationEnabled
{
public UpsertTrackInputValidation()
{
RuleFor(x => x.TrackTime).NotNull();
RuleFor(x => x.TraceTimeZone).NotNull();
}
}

View File

@ -10,5 +10,10 @@ public class OrderedTrackCodeDto
/// <summary>
/// 轨迹内容代码
/// </summary>
public string Code { get; set; }
public string Code { get; set; } = null!;
/// <summary>
/// 是否对外
/// </summary>
public bool IsExternal { get; set; }
}

View File

@ -57,7 +57,8 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
.Select((a, b) => new OrderedTrackCodeDto
{
TemplateId = a.TrackTemplateId,
Code = b.Code
Code = b.Code,
IsExternal = a.IsExternal
})
.ToListAsync();
}