临时提交

This commit is contained in:
李鹏军 2024-03-18 15:40:50 +08:00
parent 80e6cc0c53
commit f189cb1a63
10 changed files with 104 additions and 62 deletions

View File

@ -0,0 +1,19 @@
namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
public class GetTrackCounterOutput
{
/// <summary>
/// 总条数
/// </summary>
public int TotalCount { get; set; }
/// <summary>
/// 异常数
/// </summary>
public int ErrorCount { get; set; }
/// <summary>
/// 预警数
/// </summary>
public int WarnCount { get; set; }
}

View File

@ -27,12 +27,12 @@ public class TrackPushAfterUpdateOrderEventHandler : ITransientDependency, ICapS
*/
if (!@event.IsSuccess)
{
order.QuestionType = (int)TrackPushProblemType.Error;
order.QuestionType = (int)TrackProblemType.Error;
order.ProblemDescription = @event.Message;
}
else
{
order.QuestionType = (int)TrackPushProblemType.None;
order.QuestionType = (int)TrackProblemType.None;
if (@event.OptionType == OptionType.新增)
{
// tips:只有新增会影响推送进度?

View File

@ -110,7 +110,7 @@ public class TrackPushService : ApplicationService
var orders = await _orderRepository.GetListAsync(x =>
!x.IsCompleted && x.QuestionType == 0 && x.LatestPushTime < time);
orders.ForEach(x => { x.QuestionType = (int)TrackPushProblemType.Warn; });
orders.ForEach(x => { x.QuestionType = (int)TrackProblemType.Warn; });
await _orderRepository.UpdateRangeAsync(orders, x => new { x.QuestionType });

View File

@ -1,8 +1,11 @@
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using System.Diagnostics;
using SJZY.Track.Application.Contract.Dtos.ProvideServices;
using SJZY.Track.Application.Contract.Dtos.TrackOrder;
using SJZY.Track.Domain.Aggregates.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.Order;
using SJZY.Track.Domain.Dtos.TrackTemplate;
using SJZY.Track.Domain.Enums;
using SJZY.Track.Domain.Queries;
namespace SJZY.Track.Application.Services.TrackOrders;
@ -42,25 +45,32 @@ public class TrackOrderService : ApplicationService
var list = ObjectMapper.Map<List<TrackDetailsIndex>, List<TrackOrderDetailDto>>(trackDetails);
var trackCodes = list.Where(a => !a.Code.IsNullOrWhiteSpace()).Select(a => a.Code).Distinct().ToList();
var trackContents = await _trackContentRepository.GetTrackContentAttributeValue(new GetTemplateContentAttributeValueInputVO
{
SubSystemId = input.SubSystemId,
TrackTemplateIds = input.TrackTemplateIds,
TrackCodes = trackCodes
});
var trackContents = await _trackContentRepository.GetTrackContentAttributeValue(
new GetTemplateContentAttributeValueInputVO
{
SubSystemId = input.SubSystemId,
TrackTemplateIds = input.TrackTemplateIds,
TrackCodes = trackCodes
});
Debug.Assert(input.TrackTemplateIds != null, "input.TrackTemplateIds != null");
input.TrackTemplateIds = input.TrackTemplateIds.Where(a => a > 0).ToList();
int id = 1;
list.ForEach(a =>
{
a.Id = id++;
var trackContentsOfTemplates = trackContents.Where(b => b.SubSystemId == input.SubSystemId && b.TrackCode == a.Code
&& input.TrackTemplateIds.Contains(b.TrackTemplateId));
GetTemplateContentAttributeValueVO trackContent = null;
var insertData = input.TrackTemplateIds.Intersect(trackContentsOfTemplates.Select(aa => aa.TrackTemplateId)).ToList();
var trackContentsOfTemplates = trackContents.Where(b => b.SubSystemId == input.SubSystemId &&
b.TrackCode == a.Code
&& input.TrackTemplateIds.Contains(
b.TrackTemplateId)).ToList();
GetTemplateContentAttributeValueVO? trackContent = null;
var insertData = input.TrackTemplateIds
.Intersect(trackContentsOfTemplates.Select(aa => aa.TrackTemplateId)).ToList();
if (!insertData.IsNullOrEmpty())
{
trackContent = trackContentsOfTemplates.FirstOrDefault(a => a.TrackTemplateId == insertData.FirstOrDefault());
trackContent =
trackContentsOfTemplates.FirstOrDefault(it =>
it.TrackTemplateId == insertData.FirstOrDefault());
}
if (trackContent != null)
@ -68,14 +78,10 @@ public class TrackOrderService : ApplicationService
a.IsCanDelete = trackContent.IsCanDelete;
a.IsExternal = trackContent.IsExternal;
}
//else
//{
// a.IsCanDelete=false;
// a.IsExternal=false;
//}
if (a.TrackTimeZoneValue == 0f)
{
a.TrackTimeZone = $"GTM{" "}+00:00";
a.TrackTimeZone = "GTM +00:00";
}
else
{
@ -85,11 +91,10 @@ public class TrackOrderService : ApplicationService
TimeSpan offset = new TimeSpan(hours, minutes, 0);
string timeZoneStr = offset.ToString();
string flag = a.TrackTimeZoneValue > 0f ? "+" : "";
a.TrackTimeZone = $"GTM{" "}{flag}{timeZoneStr.RemovePostFix(":00")}";
a.TrackTimeZone = $"GTM {flag}{timeZoneStr.RemovePostFix(":00")}";
}
});
return list;
}
return new List<TrackOrderDetailDto>();
@ -115,4 +120,21 @@ public class TrackOrderService : ApplicationService
}
#endregion
/// <summary>
/// 获取轨迹计数器
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<GetTrackCounterOutput> GetTrackCounterAsync()
{
var counts = await _trackOrderQueries.GetTrackProblemCountsAsync();
return new GetTrackCounterOutput
{
TotalCount = counts.Sum(x => x.Count),
ErrorCount = counts.FirstOrDefault(x => x.ProblemType == (int)TrackProblemType.Error)?.Count ?? 0,
WarnCount = counts.FirstOrDefault(x => x.ProblemType == (int)TrackProblemType.Warn)?.Count ?? 0,
};
}
}

View File

@ -7,21 +7,11 @@
/// </summary>
public int SubSystemId { get; set; }
///// <summary>
///// 单号
///// </summary>
//public List<string>? OrderNos { get; set; }
/// <summary>
/// 当tab选中 0 默认不传 1 直接写死传值 [1,4] 2 传 [2,4]
/// </summary>
public int TabType { get; set; }
///// <summary>
///// 当tab选中 1 直接写死传值 [1,4] 2 传 [2,4]
///// </summary>
//public List<int>? QuestionTypeIds { get; set; }
/// <summary>
/// 订单类型
/// </summary>
@ -142,25 +132,5 @@
/// 轨迹模板Id数组
/// </summary>
public List<int>? TrackTemplateIds { get; set; }
/// <summary>
/// 问题类型(主数据枚举TrackQuestionType)
/// </summary>
public int QuestionType { get; set; }
/// <summary>
/// 问题类型名称
/// </summary>
public string? QuestionTypeName { get; set; }
/// <summary>
/// 问题描述(主数据枚举TrackProblemDescription)
/// </summary>
public string? ProblemDescription { get; set; }
/// <summary>
/// 问题描述名称
/// </summary>
public string? ProblemDescriptionName { get; set; }
}
}

View File

@ -0,0 +1,14 @@
namespace SJZY.Track.Domain.Dtos.Order;
public class GetTrackCounterVO
{
/// <summary>
/// 问题类型
/// </summary>
public int ProblemType { get; set; }
/// <summary>
/// 总条数
/// </summary>
public int Count { get; set; }
}

View File

@ -0,0 +1,6 @@
namespace SJZY.Track.Domain.Enums;
public enum OrderType
{
干线提单 = 1
}

View File

@ -1,7 +1,7 @@
namespace SJZY.Track.Domain.Enums;
[Flags]
public enum TrackPushProblemType
public enum TrackProblemType
{
/// <summary>
/// 没问题

View File

@ -10,4 +10,10 @@ public interface ITrackOrderQueries
/// <param name="input"></param>
/// <returns></returns>
Task<UnifyPageResultDto<TrackOrderVO>> GetPageTrackOrder(GetPageTrackOrderInputVO input);
/// <summary>
/// 获取轨迹各个问题数
/// </summary>
/// <returns></returns>
Task<List<GetTrackCounterVO>> GetTrackProblemCountsAsync();
}

View File

@ -29,7 +29,7 @@ public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries,
int ques = 0;
if (!input.OrderNos.IsNullOrWhiteSpace())
{
orderNoList = input.OrderNos!.Split(new[] { ',', ',', ':', ':' }).ToList();
orderNoList = input.OrderNos!.Split(',', ',', ':', ':').ToList();
}
if (input.TabType == 1)
@ -63,16 +63,9 @@ public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries,
Id = a.Id,
OrderNumber = a.OrderNo,
OrderType = a.OrderType,
OrderTypeName = SqlFunc.IF(a.OrderType == 1).Return("干线提单").ElseIF(a.OrderType == 2).Return("小包运单")
.ElseIF(a.OrderType == 3)
.Return("箱/袋单").ElseIF(a.OrderType == 4).Return("FBA订单").End(""),
CustomerShortName = b.Abbreviation,
CustomerCode = b.Code,
CustomerId = a.CustomId,
QuestionType = a.QuestionType,
QuestionTypeName = SqlFunc.IF(a.QuestionType == 1).Return("异常").ElseIF(a.QuestionType == 2).Return("预警")
.End(""),
ProblemDescription = a.ProblemDescription,
NewestTrackContent = a.LatestTrackContent,
NewestTrackEnContent = a.LatestTrackEnContent,
NewestTrackPlace = a.LatestTrackPlace,
@ -105,4 +98,16 @@ public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries,
return pageList;
}
public async Task<List<GetTrackCounterVO>> GetTrackProblemCountsAsync()
{
return await Context.Queryable<OrderEntity>()
.GroupBy(x => x.QuestionType)
.Select(x => new GetTrackCounterVO
{
ProblemType = x.QuestionType,
Count = SqlFunc.AggregateCount(1)
})
.ToListAsync();
}
}