Merge pull request 'S01-轨迹中台' (#3) from S01-轨迹中台 into dev
Reviewed-on: http://192.168.80.50:3000/Dotnet/SJZY.Track.Api/pulls/3
This commit is contained in:
commit
d29d468bc6
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,6 @@
|
||||
namespace SJZY.Track.Application.Contract.Dtos.ProvideServices;
|
||||
|
||||
public class TrackUpsertEvent
|
||||
{
|
||||
public int Order { get; set; }
|
||||
}
|
||||
@ -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";
|
||||
}
|
||||
@ -81,6 +81,7 @@ public class TrackService : ApplicationService
|
||||
}
|
||||
|
||||
// 根据订单关联关系向下刷,不同子系统还需要做内容映射
|
||||
var links = await _orderRepository.GetLinkedOrderIdsAsync(orderId);
|
||||
|
||||
// 推送
|
||||
return true;
|
||||
|
||||
@ -57,4 +57,15 @@ public class TrackPushService : ApplicationService, ITransientDependency
|
||||
{
|
||||
return await _trackPushConfigRepository.GetDetailAsync(id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹推送配置内容详情
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("GetContentDetail")]
|
||||
public async Task<GetTrackPushContentDetailOutputVO> GetContentDetailAsync(int id)
|
||||
{
|
||||
return await _trackPushConfigRepository.GetContentDetailAsync(id);
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
@ -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>
|
||||
|
||||
@ -13,4 +13,5 @@ public interface ITrackDetailsRepository
|
||||
Task<List<TrackDetailsIndex>> GetListAsync(int orderType, List<string> orderNos);
|
||||
|
||||
Task<(List<TrackDetailsIndex> list, long total)> GetListAsync(TrackDetailsQueryInput input);
|
||||
Task<List<TrackDetailsIndex>> GetListAsync(int orderId);
|
||||
}
|
||||
@ -10,4 +10,6 @@ public interface ITrackPushConfigRepository : IBasicRepository<TrackPushConfigEn
|
||||
Task<UnifyPageResultDto<GetTrackPushContentPageOutputVO>> GetContentPageAsync(GetTrackPushContentPageInputVO input);
|
||||
|
||||
Task<GetTrackPushConfigDetailOutputVO> GetDetailAsync(int id);
|
||||
|
||||
Task<GetTrackPushContentDetailOutputVO> GetContentDetailAsync(int id);
|
||||
}
|
||||
@ -0,0 +1,61 @@
|
||||
namespace SJZY.Track.Domain.Dtos.TrackPush;
|
||||
|
||||
public class GetTrackPushContentDetailOutputVO
|
||||
{
|
||||
/// <summary>
|
||||
/// 轨迹内容代码
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送扩展字段
|
||||
/// </summary>
|
||||
public string ExpandFieldsValue { get; set; }
|
||||
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送单号类型
|
||||
/// </summary>
|
||||
public int OrderNoType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送轨迹排序
|
||||
/// </summary>
|
||||
public int Sort { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送轨迹内容代码
|
||||
/// </summary>
|
||||
public string TrackContentCodeValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹内容id
|
||||
/// </summary>
|
||||
public int TrackContentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送轨迹内容
|
||||
/// </summary>
|
||||
public string TrackContentValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送轨迹内容英文
|
||||
/// </summary>
|
||||
public string TrackEnContentValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 轨迹推送配置id
|
||||
/// </summary>
|
||||
public int TrackPullConfigId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送轨迹状态
|
||||
/// </summary>
|
||||
public string TrackStatusValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 推送轨迹时区
|
||||
/// </summary>
|
||||
public string TrackTimeZone { get; set; }
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -37,7 +37,7 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
||||
var response = await Context.UpdateAsync<TrackDetailsIndex>(index.Id, u => u
|
||||
.Index(IndexName)
|
||||
.Doc(index)
|
||||
//.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
|
||||
//.Refresh(Refresh.True) // 可选:立即刷新索引使更改立即可见
|
||||
);
|
||||
if (!response.IsValid)
|
||||
throw new Exception($"数据修改失败,原因:{response.DebugInformation}");
|
||||
@ -73,6 +73,21 @@ internal class TrackDetailsRepository : ElasticSearchContextAbstract<TrackDetail
|
||||
return data.Documents.ToList();
|
||||
}
|
||||
|
||||
public async Task<List<TrackDetailsIndex>> GetListAsync(int orderId)
|
||||
{
|
||||
var data = await Context.SearchAsync<TrackDetailsIndex>(x => x
|
||||
.Source(s => s.Includes(fd => fd
|
||||
.Field(f => f.TrackStatus)
|
||||
.Field(f => f.TrackCode)
|
||||
.Field(f => f.TrackContent)
|
||||
.Field(f => f.TrackPlace)
|
||||
.Field(f => f.TrackTime)
|
||||
.Field(f => f.TraceTimeZone)
|
||||
)).Query(q => q.Terms(t => t.Field(f => f.OrderId).Terms(orderId))));
|
||||
|
||||
return data?.Documents?.ToList();
|
||||
}
|
||||
|
||||
public async Task<(List<TrackDetailsIndex> list, long total)> GetListAsync(TrackDetailsQueryInput input)
|
||||
{
|
||||
if (input.OrderNos.Count < 1) return default;
|
||||
|
||||
@ -69,4 +69,17 @@ public class TrackPushConfigRepository : BasicRepository<TrackPushConfigEntity>,
|
||||
}, true)
|
||||
.SingleAsync();
|
||||
}
|
||||
|
||||
public async Task<GetTrackPushContentDetailOutputVO> GetContentDetailAsync(int id)
|
||||
{
|
||||
return await Context.Queryable<TrackPushContentConfigEntity>()
|
||||
.InnerJoin<TrackContentEntity>((pushContent, trackContent) => pushContent.TrackContentId == trackContent.Id)
|
||||
.Where(pushContent => pushContent.Id == id)
|
||||
.Select((pushContent, trackContent) => new GetTrackPushContentDetailOutputVO
|
||||
{
|
||||
Id = pushContent.Id,
|
||||
Code = trackContent.Code + "-" + trackContent.Content,
|
||||
}, true)
|
||||
.SingleAsync();
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<GenerateDocumentationFile>True</GenerateDocumentationFile>
|
||||
<LangVersion>preview</LangVersion>
|
||||
<AssemblyName>SJZY.Track.Repository</AssemblyName>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user