Merge branch 'S01-轨迹中台' of http://192.168.80.50:3000/Dotnet/SJZY.Track.Api into S01-轨迹中台

This commit is contained in:
moyongzhen 2024-03-01 11:54:29 +08:00
commit 64963d2f42
9 changed files with 105 additions and 52 deletions

View File

@ -37,6 +37,7 @@ namespace SJZY.Track.Api
var environment = context.Services.GetHostingEnvironment();
var configuration = context.Services.GetConfiguration();
context.Services.AddSwagger();
//过滤器相关配置
context.Services.AddMvc(options =>
{
@ -60,7 +61,6 @@ namespace SJZY.Track.Api
Configure<AbpJsonOptions>(options => options.OutputDateTimeFormat = "yyyy-MM-dd HH:mm:ss");
Configure<AbpAuditingOptions>(options => { options.IsEnabled = false; });
context.Services.AddRedis();
}

View File

@ -0,0 +1,6 @@
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
public class TrackUpsertEvent
{
public int Order { get; set; }
}

View File

@ -5,5 +5,5 @@ namespace SJZY.Track.Application.Services.ProvideServices;
public class TrackCustomer : ITransientDependency, ICapSubscribe
{
public const string CapSubscribe = "SJZY.FMC.VoucherRedundantCalc";
public const string CapSubscribe = "SJZY.Track.Upsert";
}

View File

@ -81,6 +81,7 @@ public class TrackService : ApplicationService
}
// 根据订单关联关系向下刷,不同子系统还需要做内容映射
var links = await _orderRepository.GetLinkedOrderIdsAsync(orderId);
// 推送
return true;

View File

@ -20,6 +20,30 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
/// <returns></returns>
Task<UnifyPageResultDto<TrackOrderVO>> GetPageTrackOrder(GetPageTrackOrderInputVO input);
/// <summary>
/// 更新订单
/// </summary>
/// <param name="order"></param>
/// <returns></returns>
Task UpdateOrderAsync(OrderEntity order);
/// <summary>
/// 删除订单
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
Task DeleteOrderAsync(int orderId);
#region 订单关联
/// <summary>
/// 根据订单id,获取关联的订单id集合
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
Task<List<int>> GetLinkedOrderIdsAsync(int orderId);
/// <summary>
/// 关联订单
/// </summary>
@ -34,17 +58,5 @@ public interface IOrderRepository : IBasicRepository<OrderEntity>
/// <returns></returns>
Task UnLinkByIdsAsync(List<int> linkIds);
/// <summary>
/// 更新订单
/// </summary>
/// <param name="order"></param>
/// <returns></returns>
Task UpdateOrderAsync(OrderEntity order);
/// <summary>
/// 删除订单
/// </summary>
/// <param name="orderId"></param>
/// <returns></returns>
Task DeleteOrderAsync(int orderId);
#endregion
}

View File

@ -12,6 +12,18 @@ public class OrderLinkEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntit
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 订单id
/// </summary>
[SugarColumn(ColumnName = "OrderId")]
public int OrderId { get; set; }
/// <summary>
/// 关联的订单id
/// </summary>
[SugarColumn(ColumnName = "LinkOrderId")]
public int LinkOrderId { get; set; }
/// <summary>
/// 订单类型
/// </summary>
@ -24,6 +36,7 @@ public class OrderLinkEntity : ICreateBaicEntity, ISoftDeleteBasicEntity, IEntit
[SugarColumn(ColumnName = "OrderNo")]
public string OrderNo { get; set; } = null!;
/// <summary>
/// 关联的订单类型
/// </summary>

View File

@ -10,7 +10,7 @@ public class KeywordsInputVO : PageInfoInput
/// <summary>
/// 关键字
/// </summary>
public string Keywords { get; set; }
public string? Keywords { get; set; }
/// <summary>
/// 选中项

View File

@ -1,5 +1,4 @@
using Nest;
using SJZY.Track.Domain;
using SJZY.Track.Domain;
using SJZY.Track.Domain.Aggregates.OrderAggregate;
using SJZY.Track.Domain.Aggregates.TrackTemplateAggregate;
using SJZY.Track.Domain.Dtos.Order;
@ -18,16 +17,6 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
.ExecuteCommandAsync();
}
public async Task LinkOrderAsync(List<OrderLinkEntity> orderLinkEntities)
{
await Context.Insertable(orderLinkEntities).ExecuteCommandAsync();
}
public async Task UnLinkByIdsAsync(List<int> linkIds)
{
await Context.Deleteable(linkIds).ExecuteCommandAsync();
}
public async Task UpdateOrderAsync(OrderEntity order)
{
using var tran = TransactionHelper.GetReadCommitted();
@ -62,6 +51,29 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
tran.Complete();
}
#region 订单关联
public async Task<List<int>> GetLinkedOrderIdsAsync(int orderId)
{
return await Context.Queryable<OrderEntity>()
.LeftJoin<OrderLinkEntity>((a, b) => a.Id == b.OrderId)
.Where(a => a.Id == orderId)
.Select((a, b) => b.LinkOrderId)
.ToListAsync();
}
public async Task LinkOrderAsync(List<OrderLinkEntity> orderLinkEntities)
{
await Context.Insertable(orderLinkEntities).ExecuteCommandAsync();
}
public async Task UnLinkByIdsAsync(List<int> linkIds)
{
await Context.Deleteable(linkIds).ExecuteCommandAsync();
}
#endregion
#region 轨迹订单明细
/// <summary>
@ -86,31 +98,37 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
public async Task<UnifyPageResultDto<TrackOrderVO>> GetPageTrackOrder(GetPageTrackOrderInputVO input)
{
var pageList = await Context.Queryable<OrderEntity>()
.LeftJoin<VExternalSubjectEntity>((a, b) => a.CustomId==b.Id)
.LeftJoin<VSystemEntity>((a, b, c) => a.SubSystemId==c.Id)
.WhereIF(input.SubSystemId > 0, (a, b, c) => a.SubSystemId == input.SubSystemId)
.WhereIF(!input.OrderNos.IsNullOrEmpty(), (a, b, c) => input.OrderNos.Contains(a.OrderNo))
.WhereIF(input.CreateTimeStart.HasValue&& input.CreateTimeEnd.HasValue, (a, b, c) => a.CreateTime>= input.CreateTimeStart && a.CreateTime<= input.CreateTimeEnd)
.WhereIF(input.CreateTimeStart.HasValue&& (!input.CreateTimeEnd.HasValue), (a, b, c) => a.CreateTime>= input.CreateTimeStart)
.WhereIF((!input.CreateTimeStart.HasValue)&& input.CreateTimeEnd.HasValue, (a, b, c) => a.CreateTime<= input.CreateTimeEnd)
.Select((a, b, c) => new TrackOrderVO
{
Id = a.Id,
OrderNumber= a.OrderNo,
OrderType = a.OrderType,
CustomerShortName= b.Abbreviation,
CustomerCode= b.Code,
TrackTemplateNames = SqlFunc.Subqueryable<OrderTemplateEntity>().LeftJoin<TrackTemplateEntity>((aa, bb) => aa.TrackTemplateId==bb.Id)
.Where((aa, bb) => a.Id==aa.OrderId).SelectStringJoin((aa, bb) => bb.Name, ","),
NewestTrackContent= a.LatestTrackContent,
NewestTrackEnContent= a.LatestTrackEnContent,
NewestTrackPlace= a.LatestTrackPlace,
IsFinish=a.IsCompleted,
CreateTime=a.CreateTime,
SubSystem= c.CnName
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
.LeftJoin<VExternalSubjectEntity>((a, b) => a.CustomId == b.Id)
.LeftJoin<VSystemEntity>((a, b, c) => a.SubSystemId == c.Id)
.WhereIF(input.SubSystemId > 0, (a, b, c) => a.SubSystemId == input.SubSystemId)
.WhereIF(!input.OrderNos.IsNullOrEmpty(), (a, b, c) => input.OrderNos.Contains(a.OrderNo))
.WhereIF(input.CreateTimeStart.HasValue && input.CreateTimeEnd.HasValue,
(a, b, c) => a.CreateTime >= input.CreateTimeStart && a.CreateTime <= input.CreateTimeEnd)
.WhereIF(input.CreateTimeStart.HasValue && (!input.CreateTimeEnd.HasValue),
(a, b, c) => a.CreateTime >= input.CreateTimeStart)
.WhereIF((!input.CreateTimeStart.HasValue) && input.CreateTimeEnd.HasValue,
(a, b, c) => a.CreateTime <= input.CreateTimeEnd)
.Select((a, b, c) => new TrackOrderVO
{
Id = a.Id,
OrderNumber = a.OrderNo,
OrderType = a.OrderType,
CustomerShortName = b.Abbreviation,
CustomerCode = b.Code,
TrackTemplateNames = SqlFunc.Subqueryable<OrderTemplateEntity>()
.LeftJoin<TrackTemplateEntity>((aa, bb) => aa.TrackTemplateId == bb.Id)
.Where((aa, bb) => a.Id == aa.OrderId).SelectStringJoin((aa, bb) => bb.Name, ","),
NewestTrackContent = a.LatestTrackContent,
NewestTrackEnContent = a.LatestTrackEnContent,
NewestTrackPlace = a.LatestTrackPlace,
IsFinish = a.IsCompleted,
CreateTime = a.CreateTime,
SubSystem = c.CnName
})
.ToPagedListAsync(input.PageIndex, input.PageSize);
#region 暂时注释
//if (pageList.List.Any())
//{
// var orderIds = pageList.List.Select(a => a.Id);
@ -129,7 +147,9 @@ public class OrderRepository : BasicRepository<OrderEntity>, IOrderRepository, I
// a.TrackTemplateNames = templateListOfOrderId.Select(c => c.Name).JoinAsString(",");
// });
//}
#endregion
return pageList;
}

View File

@ -4,6 +4,7 @@
<TargetFramework>net7.0</TargetFramework>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<LangVersion>preview</LangVersion>
<AssemblyName>SJZY.Track.Repository</AssemblyName>
</PropertyGroup>
<ItemGroup>