Merge remote-tracking branch 'origin/S04轨迹预警' into S04轨迹预警

This commit is contained in:
xiaolipro 2024-07-27 17:44:32 +08:00
commit 1513bb4964
20 changed files with 193 additions and 24 deletions

View File

@ -15,15 +15,15 @@ public class EditTrackNodeInput
/// <summary> /// <summary>
/// 系统id /// 系统id
/// </summary> /// </summary>
public int SystemId { get; set; } public int? SubSystemId { get; set; }
/// <summary> /// <summary>
/// 节点名称 /// 节点名称
/// </summary> /// </summary>
public string Name { get; set; } public string? NodeName { get; set; }
/// <summary> /// <summary>
/// 节点英文名称 /// 节点英文名称
/// </summary> /// </summary>
public string EnName { get; set; } public string? NodeEnName { get; set; }
} }

View File

@ -46,4 +46,9 @@ public class TrackPullParamConfigDto
/// 轨迹明细数组路径 /// 轨迹明细数组路径
/// </summary> /// </summary>
public string TrackDetailsPath { get; set; } = null!; public string TrackDetailsPath { get; set; } = null!;
/// <summary>
/// 轨迹内容代码
/// </summary>
public string? TrackContentCode { get; set; }
} }

View File

@ -7,4 +7,6 @@ public struct OrderIdentifier
public int OrderType { get; set; } public int OrderType { get; set; }
public int CustomId { get; set; } public int CustomId { get; set; }
public bool IsTrigger { get; set; }
} }

View File

@ -41,4 +41,9 @@ public class TrackChangeAfterUpdateOrderEvent
/// 轨迹时区 /// 轨迹时区
/// </summary> /// </summary>
public float TrackTimeZone { get; set; } public float TrackTimeZone { get; set; }
/// <summary>
/// 根据配置规则,标记拉取时需要的订单Id
/// </summary>
public int[] TriggerPullOrderIds { get; set; } = Array.Empty<int>();
} }

View File

@ -12,9 +12,9 @@ public class TrackNodeMapperProfile :Profile
{ {
CreateMap<QueryTrackNodeRequest, TrackNodePageDto>(); CreateMap<QueryTrackNodeRequest, TrackNodePageDto>();
CreateMap<EditTrackNodeInput, TrackNodeEntity>(MemberList.None) CreateMap<EditTrackNodeInput, TrackNodeEntity>(MemberList.None)
.ForMember(val => val.NodeName, opt => opt.MapFrom(src => src.Name)) .ForMember(val => val.NodeName, opt => opt.MapFrom(src => src.NodeName))
.ForMember(val => val.NodeEnName, opt => opt.MapFrom(src => src.EnName)) .ForMember(val => val.NodeEnName, opt => opt.MapFrom(src => src.NodeEnName))
.ForMember(val => val.SubSystemId, opt => opt.MapFrom(src => src.SystemId)); .ForMember(val => val.SubSystemId, opt => opt.MapFrom(src => src.SubSystemId));
} }
} }

View File

@ -6,6 +6,9 @@ using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.CAP.EventHandlers; namespace SJZY.Track.Application.CAP.EventHandlers;
/// <summary>
/// 拉去轨迹后,执行了兜底操作还是失败的标记操作
/// </summary>
public class PullChangeBottomLineUpdateOrderEventHandler :ITransientDependency, ICapSubscribe public class PullChangeBottomLineUpdateOrderEventHandler :ITransientDependency, ICapSubscribe
{ {
private readonly IOrderRepository _orderRepository; private readonly IOrderRepository _orderRepository;
@ -18,6 +21,6 @@ public class PullChangeBottomLineUpdateOrderEventHandler :ITransientDependency,
[CapSubscribe(GlobalConst.PullChangeBottomLineUpdateOrderSubscribe)] [CapSubscribe(GlobalConst.PullChangeBottomLineUpdateOrderSubscribe)]
public async Task ConsumerAsync(PullChangeBottomLineUpdateOrderEvent @event) public async Task ConsumerAsync(PullChangeBottomLineUpdateOrderEvent @event)
{ {
await _orderRepository.UpdateBatchIdsAsync(@event.OrderIds, @event.DeficiencyTagValue); var rows =await _orderRepository.UpdateBatchIdsAsync(@event.OrderIds, @event.DeficiencyTagValue);
} }
} }

View File

@ -28,6 +28,7 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
if (orders.Count == 0) return; if (orders.Count == 0) return;
var updateOrders = new List<OrderEntity>(); var updateOrders = new List<OrderEntity>();
foreach (var order in orders) foreach (var order in orders)
{ {
if (order.LatestTrackContent != @event.TrackContent) if (order.LatestTrackContent != @event.TrackContent)
@ -45,6 +46,12 @@ public class TrackChangeAfterUpdateOrderEventHandler : ITransientDependency, ICa
order.IsCompleted = @event.IsCompleted; order.IsCompleted = @event.IsCompleted;
} }
// 触发拉取节点
if (@event.TriggerPullOrderIds.Contains(order.Id))
{
order.IsTriggerPull = 1;
}
order.LatestTrackContent = @event.TrackContent; order.LatestTrackContent = @event.TrackContent;
order.LatestTrackEnContent = @event.TrackEnContent; order.LatestTrackEnContent = @event.TrackEnContent;
order.LatestTrackPlace = @event.TrackPlace; order.LatestTrackPlace = @event.TrackPlace;

View File

@ -2,11 +2,14 @@
using SJZY.Expand.ABP.Core.Logger; using SJZY.Expand.ABP.Core.Logger;
using SJZY.Expand.ABP.Core.PublicMethords; using SJZY.Expand.ABP.Core.PublicMethords;
using SJZY.Track.Application.Contract.Events; using SJZY.Track.Application.Contract.Events;
using SJZY.Track.Application.Contract.Services;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Consts; using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Order;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using OrderIdentifier = SJZY.Track.Application.Contract.Events.OrderIdentifier;
namespace SJZY.Track.Application.CAP.EventHandlers; namespace SJZY.Track.Application.CAP.EventHandlers;
@ -16,14 +19,16 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
private readonly IProvideQueries _provideQueries; private readonly IProvideQueries _provideQueries;
private readonly ITrackDetailsRepository _trackDetailsRepository; private readonly ITrackDetailsRepository _trackDetailsRepository;
private readonly ICapPublisher _capPublisher; private readonly ICapPublisher _capPublisher;
private readonly ITrackPullCacheService _trackPullCacheService;
public TrackUpsertEventHandler(IOrderRepository orderRepository, ICapPublisher capPublisher, public TrackUpsertEventHandler(IOrderRepository orderRepository, ICapPublisher capPublisher,
IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository) IProvideQueries provideQueries, ITrackDetailsRepository trackDetailsRepository, ITrackPullCacheService trackPullCacheService)
{ {
_orderRepository = orderRepository; _orderRepository = orderRepository;
_capPublisher = capPublisher; _capPublisher = capPublisher;
_provideQueries = provideQueries; _provideQueries = provideQueries;
_trackDetailsRepository = trackDetailsRepository; _trackDetailsRepository = trackDetailsRepository;
_trackPullCacheService = trackPullCacheService;
} }
[CapSubscribe(GlobalConst.TrackUpsertSubscribe, Group = GlobalConst.TrackUpsertSubscribe)] [CapSubscribe(GlobalConst.TrackUpsertSubscribe, Group = GlobalConst.TrackUpsertSubscribe)]
@ -100,7 +105,7 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
} }
} }
} }
private async Task HandleTrackAsync(TrackUpsertEvent @event, List<int> canNextOrderIds) private async Task HandleTrackAsync(TrackUpsertEvent @event, List<int> canNextOrderIds)
{ {
var content = await _provideQueries.GetTrackContentAsync(@event.SubSystemId, @event.TrackCode); var content = await _provideQueries.GetTrackContentAsync(@event.SubSystemId, @event.TrackCode);
@ -114,7 +119,9 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode); var trackContents = await _provideQueries.MatchTrackContentAsync(newOrderIds, @event.TrackCode);
var insertTracks = new List<TrackDetailsIndex>(); var insertTracks = new List<TrackDetailsIndex>();
var triggerPullOrder = new List<int>();
var providerDic=await GetProviderDic(orderIds);
foreach (var order in @event.OrderIdentifiers) foreach (var order in @event.OrderIdentifiers)
{ {
var track = tracks.FirstOrDefault(x => x.OrderId == order.OrderId); var track = tracks.FirstOrDefault(x => x.OrderId == order.OrderId);
@ -170,13 +177,24 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
} }
canNextOrderIds.Add(order.OrderId); canNextOrderIds.Add(order.OrderId);
if(!providerDic.TryGetValue(order.OrderId,out var provider))
continue;
var config =
await _trackPullCacheService.GetPullParamWithContentConfigAsync(provider.SubSystemId,
provider.ServiceProviderId);
if (config!=null && config.ParamConfig!=null && config.ParamConfig.TrackContentCode == @event.TrackCode)
{
triggerPullOrder.Add(order.OrderId);
}
} }
if (canNextOrderIds.Count == 0) return; if (canNextOrderIds.Count == 0) return;
// 批量add to es // 批量add to es
await _trackDetailsRepository.AddManyAsync(insertTracks); await _trackDetailsRepository.AddManyAsync(insertTracks);
// 触发订单主表更新事件(异步) // 触发订单主表更新事件(异步)
await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe, await _capPublisher.PublishAsync(GlobalConst.TrackChangeAfterUpdateOrderSubscribe,
new TrackChangeAfterUpdateOrderEvent new TrackChangeAfterUpdateOrderEvent
@ -188,7 +206,8 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
TrackStatusId = content.TrackStatusId, TrackStatusId = content.TrackStatusId,
TrackPlace = @event.TrackPlace, TrackPlace = @event.TrackPlace,
TrackTime = @event.TrackTime, TrackTime = @event.TrackTime,
TrackTimeZone = @event.TrackTimeZone TrackTimeZone = @event.TrackTimeZone,
TriggerPullOrderIds = triggerPullOrder.ToArray()
}); });
// 触发轨迹推送事件(异步) // 触发轨迹推送事件(异步)
@ -215,4 +234,17 @@ public class TrackUpsertEventHandler : ITransientDependency, ICapSubscribe
await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent); await _capPublisher.PublishAsync(GlobalConst.TrackPushSubscribe, trackPushEvent);
} }
} }
/// <summary>
/// 获取服务商字典
/// </summary>
/// <param name="orderIds"></param>
/// <returns></returns>
private async Task<Dictionary<int, OrderTransportDto>> GetProviderDic(int[] orderIds)
{
var providerList = await _provideQueries.FindOrderWithServiceProviderAsync(orderIds);
return providerList.GroupBy(val => val.OrderId)
.ToDictionary(val => val.Key, val => val.First());
}
} }

View File

@ -54,6 +54,18 @@ namespace SJZY.Track.Application.Services.TrackNodeServices
var resultDto = await _trackNodeRepository.GetPageList(queryParam); var resultDto = await _trackNodeRepository.GetPageList(queryParam);
return resultDto; return resultDto;
} }
/// <summary>
/// 获取详情
/// </summary>
/// <param name="nodeid">节点id</param>
/// <returns></returns>
[HttpPost("GetDetail")]
public async Task<UnifyResultDto> GetDetail(int nodeid)
{
var resultDto = await _trackNodeRepository.GetDetail(nodeid);
return new UnifyResultDto(true,resultDto);
}
/// <summary> /// <summary>
/// 获取分页轨迹字典,下拉框用的 /// 获取分页轨迹字典,下拉框用的
@ -73,16 +85,21 @@ namespace SJZY.Track.Application.Services.TrackNodeServices
private async Task<UnifyResultDto> AddAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> AddAsync(EditTrackNodeInput input)
{ {
#region 业务校验 #region 业务校验
if(string.IsNullOrEmpty(input.NodeName)|| string.IsNullOrEmpty(input.NodeEnName) || !input.SubSystemId.HasValue)
{
return new UnifyResultDto("200", "NodeName,NodeEnName,SubSystemId 必填", false);
}
var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a => var trackNodesEntitys = await _trackNodeRepository.GetListAsync(a =>
a.SubSystemId == input.SystemId && (a.NodeName == input.Name || a.NodeEnName == input.EnName)); a.SubSystemId == input.SubSystemId && (a.NodeName == input.NodeName || a.NodeEnName == input.NodeEnName));
if (trackNodesEntitys.Any()) if (trackNodesEntitys.Any())
{ {
var trackNodeName = trackNodesEntitys.FirstOrDefault(a => a.NodeName == input.Name); var trackNodeName = trackNodesEntitys.FirstOrDefault(a => a.NodeName == input.NodeName);
if (trackNodeName != null) if (trackNodeName != null)
{ {
throw new BusinessException(message: "该子系统下节点名称已存在"); throw new BusinessException(message: "该子系统下节点名称已存在");
} }
var trackNodeEnName = trackNodesEntitys.FirstOrDefault(a => a.NodeEnName == input.EnName); var trackNodeEnName = trackNodesEntitys.FirstOrDefault(a => a.NodeEnName == input.NodeEnName);
if (trackNodeEnName != null) if (trackNodeEnName != null)
{ {
throw new BusinessException(message: "该子系统下节点英文名称已存在"); throw new BusinessException(message: "该子系统下节点英文名称已存在");
@ -99,7 +116,11 @@ namespace SJZY.Track.Application.Services.TrackNodeServices
private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> UpdateAsync(EditTrackNodeInput input)
{ {
#region 业务校验 #region 业务校验
if(string.IsNullOrEmpty(input.NodeName)|| string.IsNullOrEmpty(input.NodeEnName) )
{
return new UnifyResultDto("200", "NodeName,NodeEnName 必填", false);
}
var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id); var trackNodesEntitys = await _trackNodeRepository.GetFirstAsync(a => a.Id == input.Id);
if (trackNodesEntitys == null) if (trackNodesEntitys == null)
{ {
@ -108,8 +129,8 @@ namespace SJZY.Track.Application.Services.TrackNodeServices
#endregion #endregion
trackNodesEntitys.NodeEnName = input.EnName; trackNodesEntitys.NodeEnName = input.NodeEnName;
trackNodesEntitys.NodeName = input.Name; trackNodesEntitys.NodeName = input.NodeName;
var isTrue = await _trackNodeRepository.UpdateAsync(trackNodesEntitys); var isTrue = await _trackNodeRepository.UpdateAsync(trackNodesEntitys);
return new UnifyResultDto("200", "修改成功", isTrue); return new UnifyResultDto("200", "修改成功", isTrue);
@ -117,7 +138,12 @@ namespace SJZY.Track.Application.Services.TrackNodeServices
private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input) private async Task<UnifyResultDto> DeleteAsync(EditTrackNodeInput input)
{ {
var trackStatus = await _trackStatusRepository.GetFirstAsync(val => val.Node == input.Id && val.SubSystemId == input.SystemId); if(input.Id <=0 || !input.SubSystemId.HasValue)
{
return new UnifyResultDto("200", "SubSystemId 必填", false);
}
var trackStatus = await _trackStatusRepository.GetFirstAsync(val => val.Node == input.Id && val.SubSystemId == input.SubSystemId);
if(trackStatus!=null) if(trackStatus!=null)
{ {
return new UnifyResultDto("200", "删除失败,该节点已被使用", false); return new UnifyResultDto("200", "删除失败,该节点已被使用", false);

View File

@ -167,7 +167,13 @@ public class OrderEntity : IFullAuditedBasicEntitys, IAggregateRoot
/// </summary> /// </summary>
[SugarColumn(ColumnName = "ArrivalProvince")] [SugarColumn(ColumnName = "ArrivalProvince")]
public string? ArrivalProvince { get; set; } public string? ArrivalProvince { get; set; }
/// <summary>
/// 是否触发拉取,1表示触发
/// </summary>
[SugarColumn(ColumnName = "IsTriggerPull")]
public short? IsTriggerPull { get; set; }
[SugarColumn(IsIgnore = true)] public List<OrderFlightEntity> OrderFlights { get; set; } [SugarColumn(IsIgnore = true)] public List<OrderFlightEntity> OrderFlights { get; set; }
[SugarColumn(IsIgnore = true)] public List<OrderTemplateEntity> OrderTemplates { get; set; } [SugarColumn(IsIgnore = true)] public List<OrderTemplateEntity> OrderTemplates { get; set; }

View File

@ -24,4 +24,11 @@ public interface ITrackNodeRepository:IBasicRepository<TrackNodeEntity>
/// <param name="inputId"></param> /// <param name="inputId"></param>
/// <returns></returns> /// <returns></returns>
Task<int> DeleteById(long inputId); Task<int> DeleteById(long inputId);
/// <summary>
/// 获取详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<TrackNodeDto> GetDetail(long id);
} }

View File

@ -89,4 +89,10 @@ public class TrackPushPullParamsConfigEntity : IFullAuditedBasicEntitys, IEntity
/// </summary> /// </summary>
[SugarColumn(ColumnName = "ExpandFieldsName")] [SugarColumn(ColumnName = "ExpandFieldsName")]
public string? ExpandFieldsName { get; set; } public string? ExpandFieldsName { get; set; }
/// <summary>
/// 轨迹内容代码
/// </summary>
[SugarColumn(ColumnName = "TrackContentCode")]
public string? TrackContentCode { get; set; }
} }

View File

@ -0,0 +1,10 @@
namespace SJZY.Track.Domain.Dtos.Order;
public class OrderTransportDto
{
public int OrderId { get; set; }
public int ServiceProviderId { get; set; }
public int SubSystemId { get; set; }
}

View File

@ -14,6 +14,11 @@ public class TrackNodeDto
/// 子系统id /// 子系统id
/// </summary> /// </summary>
public int SubSystemId { get; set; } public int SubSystemId { get; set; }
/// <summary>
/// 系统名称
/// </summary>
public string? SystemName { get; set; }
/// <summary> /// <summary>
/// 节点名称 /// 节点名称

View File

@ -78,4 +78,9 @@ public class GetTrackPullConfigDetailOutputVO
/// 轨迹明细路径 /// 轨迹明细路径
/// </summary> /// </summary>
public string TrackDetailsPath { get; set; } public string TrackDetailsPath { get; set; }
/// <summary>
/// 轨迹内容代码
/// </summary>
public string? TrackContentCode { get; set; }
} }

View File

@ -68,4 +68,11 @@ public interface IProvideQueries
int pageSize = 1000); int pageSize = 1000);
Task<TrackContentVO?> GetTrackContentAsync(int subSystemId, string trackCode); Task<TrackContentVO?> GetTrackContentAsync(int subSystemId, string trackCode);
/// <summary>
/// 查找订单和服务商信息
/// </summary>
/// <param name="orderIds">订单id</param>
/// <returns>订单和服务商信息</returns>
Task<List<OrderTransportDto>> FindOrderWithServiceProviderAsync(int[] orderIds);
} }

View File

@ -122,7 +122,7 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
return await Context.Queryable<OrderEntity>() return await Context.Queryable<OrderEntity>()
.RightJoin<OrderTemplateEntity>((a, b) => a.Id == b.OrderId) .RightJoin<OrderTemplateEntity>((a, b) => a.Id == b.OrderId)
.LeftJoin<VServiceProviderEntity>((a, b, c) => b.ServiceProviderId == c.Id) .LeftJoin<VServiceProviderEntity>((a, b, c) => b.ServiceProviderId == c.Id)
.Where((a, b) => b.ServiceProviderId == serviceProvider && !a.IsCompleted) .Where((a, b) => b.ServiceProviderId == serviceProvider && !a.IsCompleted && a.IsTriggerPull==1)
.Select((a, b, c) => new OrderWithServiceProviderVO .Select((a, b, c) => new OrderWithServiceProviderVO
{ {
OrderNo = a.OrderNo, OrderNo = a.OrderNo,
@ -136,6 +136,20 @@ public class ProvideQueries : ISugarRepository, IProvideQueries,
.Take(pageSize) .Take(pageSize)
.ToListAsync(); .ToListAsync();
} }
public async Task<List<OrderTransportDto>> FindOrderWithServiceProviderAsync(int[] orderIds)
{
return await Context.Queryable<OrderEntity>()
.InnerJoin<OrderTemplateEntity>((a, b) => a.Id == b.OrderId)
.Where((a, b) => orderIds.Contains( a.Id) && !a.IsCompleted)
.Select((a, b) => new OrderTransportDto
{
OrderId = a.Id,
ServiceProviderId = b.ServiceProviderId,
SubSystemId = a.SubSystemId
})
.ToListAsync();
}
public async Task<TrackContentVO?> GetTrackContentAsync(int subSystemId, string trackCode) public async Task<TrackContentVO?> GetTrackContentAsync(int subSystemId, string trackCode)
{ {

View File

@ -1,5 +1,6 @@
using SJZY.Track.Domain; using SJZY.Track.Domain;
using SJZY.Track.Domain.Aggregates.OrderAggregate; using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Consts;
using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Dtos.Order;
namespace SJZY.Track.Repository.Repositories; namespace SJZY.Track.Repository.Repositories;
@ -21,7 +22,9 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
public Task<int> UpdateBatchIdsAsync(List<int> ids, int newValue) public Task<int> UpdateBatchIdsAsync(List<int> ids, int newValue)
{ {
return Context.Ado.ExecuteCommandAsync("UPDATE `t_order` SET `DeficiencyTag` = @newValue WHERE `Id` IN @ids", new { ids, newValue }); var idsString = string.Join(",", ids);
return Context.Ado.ExecuteCommandAsync(
$"UPDATE `t_order` SET `DeficiencyTag` = @newValue ,UpdateTime= current_timestamp WHERE `Id` IN ({idsString})", new { newValue });
} }
public async Task UpdateOrderAsync(OrderEntity order) public async Task UpdateOrderAsync(OrderEntity order)

View File

@ -11,10 +11,11 @@ public class TrackNodeRepository: BasicRepository<TrackNodeEntity>,ITrackNodeRep
var result = await Context.Queryable<TrackNodeEntity>() var result = await Context.Queryable<TrackNodeEntity>()
.LeftJoin<VUserEntity>((t,u1)=>t.CreateUserId==u1.Id) .LeftJoin<VUserEntity>((t,u1)=>t.CreateUserId==u1.Id)
.LeftJoin<VUserEntity>((t,u1,u2)=>t.UpdateUserId==u2.Id) .LeftJoin<VUserEntity>((t,u1,u2)=>t.UpdateUserId==u2.Id)
.LeftJoin<VSystemEntity>((t,u1,u2,u3)=>t.SubSystemId==u3.Id)
.Where((t,u1,u2)=>!t.IsDeleted&&!u1.IsDeleted&&!u2.IsDeleted) .Where((t,u1,u2)=>!t.IsDeleted&&!u1.IsDeleted&&!u2.IsDeleted)
.WhereIF(!string.IsNullOrEmpty(queryParam.KeyWord), (t,u1,u2)=>t.NodeName!.Contains(queryParam.KeyWord)||t.NodeEnName!.Contains(queryParam.KeyWord)) .WhereIF(!string.IsNullOrEmpty(queryParam.KeyWord), (t,u1,u2)=>t.NodeName!.Contains(queryParam.KeyWord)||t.NodeEnName!.Contains(queryParam.KeyWord))
.WhereIF(queryParam.SystemId.HasValue,(t,u1,u2)=>t.SubSystemId == queryParam.SystemId.Value) .WhereIF(queryParam.SystemId.HasValue,(t,u1,u2)=>t.SubSystemId == queryParam.SystemId.Value)
.Select((t, u1, u2) =>new TrackNodeDto() .Select((t, u1, u2,u3) =>new TrackNodeDto()
{ {
Id = t.Id, Id = t.Id,
NodeName = t.NodeName, NodeName = t.NodeName,
@ -24,7 +25,8 @@ public class TrackNodeRepository: BasicRepository<TrackNodeEntity>,ITrackNodeRep
CreateTime = t.CreateTime, CreateTime = t.CreateTime,
UpdateUserId = t.UpdateUserId, UpdateUserId = t.UpdateUserId,
UpdateUserName = u2.Name, UpdateUserName = u2.Name,
CreateUserName = u1.Name CreateUserName = u1.Name,
SystemName = u3.CnName
}).ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize); }).ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize);
return result; return result;
@ -50,4 +52,27 @@ public class TrackNodeRepository: BasicRepository<TrackNodeEntity>,ITrackNodeRep
{ {
return Context.Deleteable<TrackNodeEntity>().Where(val=>val.Id==inputId).ExecuteCommandAsync(); return Context.Deleteable<TrackNodeEntity>().Where(val=>val.Id==inputId).ExecuteCommandAsync();
} }
public async Task<TrackNodeDto> GetDetail(long id)
{
var result = await Context.Queryable<TrackNodeEntity>()
.LeftJoin<VUserEntity>((t, u1) => t.CreateUserId == u1.Id)
.LeftJoin<VUserEntity>((t, u1, u2) => t.UpdateUserId == u2.Id)
.LeftJoin<VSystemEntity>((t, u1, u2, u3) => t.SubSystemId == u3.Id)
.Where((t, u1, u2) => !t.IsDeleted && !u1.IsDeleted && !u2.IsDeleted)
.Select((t, u1, u2, u3) => new TrackNodeDto()
{
Id = t.Id,
NodeName = t.NodeName,
NodeEnName = t.NodeEnName,
SubSystemId = t.SubSystemId,
UpdateTime = t.UpdateTime,
CreateTime = t.CreateTime,
UpdateUserId = t.UpdateUserId,
UpdateUserName = u2.Name,
CreateUserName = u1.Name,
SystemName = u3.CnName
}).FirstAsync();
return result;
}
} }

View File

@ -72,7 +72,8 @@ public class TrackPullConfigRepository : BasicRepository<TrackPullConfigEntity>,
{ {
Id = trackPull.Id, Id = trackPull.Id,
SubSystem = system.CnName, SubSystem = system.CnName,
ServiceProvider = service.Name ServiceProvider = service.Name,
TrackContentCode = paramsConfig.TrackContentCode
}, true) }, true)
.SingleAsync(); .SingleAsync();
} }