临时提交

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) if (!@event.IsSuccess)
{ {
order.QuestionType = (int)TrackPushProblemType.Error; order.QuestionType = (int)TrackProblemType.Error;
order.ProblemDescription = @event.Message; order.ProblemDescription = @event.Message;
} }
else else
{ {
order.QuestionType = (int)TrackPushProblemType.None; order.QuestionType = (int)TrackProblemType.None;
if (@event.OptionType == OptionType.新增) if (@event.OptionType == OptionType.新增)
{ {
// tips:只有新增会影响推送进度? // tips:只有新增会影响推送进度?

View File

@ -110,7 +110,7 @@ public class TrackPushService : ApplicationService
var orders = await _orderRepository.GetListAsync(x => var orders = await _orderRepository.GetListAsync(x =>
!x.IsCompleted && x.QuestionType == 0 && x.LatestPushTime < time); !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 }); 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.TrackContentAggregate;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate; using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using SJZY.Track.Domain.Dtos.Order; using SJZY.Track.Domain.Dtos.Order;
using SJZY.Track.Domain.Dtos.TrackTemplate; using SJZY.Track.Domain.Dtos.TrackTemplate;
using SJZY.Track.Domain.Enums;
using SJZY.Track.Domain.Queries; using SJZY.Track.Domain.Queries;
namespace SJZY.Track.Application.Services.TrackOrders; namespace SJZY.Track.Application.Services.TrackOrders;
@ -42,25 +45,32 @@ public class TrackOrderService : ApplicationService
var list = ObjectMapper.Map<List<TrackDetailsIndex>, List<TrackOrderDetailDto>>(trackDetails); var list = ObjectMapper.Map<List<TrackDetailsIndex>, List<TrackOrderDetailDto>>(trackDetails);
var trackCodes = list.Where(a => !a.Code.IsNullOrWhiteSpace()).Select(a => a.Code).Distinct().ToList(); var trackCodes = list.Where(a => !a.Code.IsNullOrWhiteSpace()).Select(a => a.Code).Distinct().ToList();
var trackContents = await _trackContentRepository.GetTrackContentAttributeValue(new GetTemplateContentAttributeValueInputVO var trackContents = await _trackContentRepository.GetTrackContentAttributeValue(
{ new GetTemplateContentAttributeValueInputVO
SubSystemId = input.SubSystemId, {
TrackTemplateIds = input.TrackTemplateIds, SubSystemId = input.SubSystemId,
TrackCodes = trackCodes TrackTemplateIds = input.TrackTemplateIds,
}); TrackCodes = trackCodes
});
Debug.Assert(input.TrackTemplateIds != null, "input.TrackTemplateIds != null");
input.TrackTemplateIds = input.TrackTemplateIds.Where(a => a > 0).ToList(); input.TrackTemplateIds = input.TrackTemplateIds.Where(a => a > 0).ToList();
int id = 1; int id = 1;
list.ForEach(a => list.ForEach(a =>
{ {
a.Id = id++; a.Id = id++;
var trackContentsOfTemplates = trackContents.Where(b => b.SubSystemId == input.SubSystemId && b.TrackCode == a.Code var trackContentsOfTemplates = trackContents.Where(b => b.SubSystemId == input.SubSystemId &&
&& input.TrackTemplateIds.Contains(b.TrackTemplateId)); b.TrackCode == a.Code
GetTemplateContentAttributeValueVO trackContent = null; && input.TrackTemplateIds.Contains(
var insertData = input.TrackTemplateIds.Intersect(trackContentsOfTemplates.Select(aa => aa.TrackTemplateId)).ToList(); b.TrackTemplateId)).ToList();
GetTemplateContentAttributeValueVO? trackContent = null;
var insertData = input.TrackTemplateIds
.Intersect(trackContentsOfTemplates.Select(aa => aa.TrackTemplateId)).ToList();
if (!insertData.IsNullOrEmpty()) if (!insertData.IsNullOrEmpty())
{ {
trackContent = trackContentsOfTemplates.FirstOrDefault(a => a.TrackTemplateId == insertData.FirstOrDefault()); trackContent =
trackContentsOfTemplates.FirstOrDefault(it =>
it.TrackTemplateId == insertData.FirstOrDefault());
} }
if (trackContent != null) if (trackContent != null)
@ -68,14 +78,10 @@ public class TrackOrderService : ApplicationService
a.IsCanDelete = trackContent.IsCanDelete; a.IsCanDelete = trackContent.IsCanDelete;
a.IsExternal = trackContent.IsExternal; a.IsExternal = trackContent.IsExternal;
} }
//else
//{
// a.IsCanDelete=false;
// a.IsExternal=false;
//}
if (a.TrackTimeZoneValue == 0f) if (a.TrackTimeZoneValue == 0f)
{ {
a.TrackTimeZone = $"GTM{" "}+00:00"; a.TrackTimeZone = "GTM +00:00";
} }
else else
{ {
@ -85,11 +91,10 @@ public class TrackOrderService : ApplicationService
TimeSpan offset = new TimeSpan(hours, minutes, 0); TimeSpan offset = new TimeSpan(hours, minutes, 0);
string timeZoneStr = offset.ToString(); string timeZoneStr = offset.ToString();
string flag = a.TrackTimeZoneValue > 0f ? "+" : ""; string flag = a.TrackTimeZoneValue > 0f ? "+" : "";
a.TrackTimeZone = $"GTM{" "}{flag}{timeZoneStr.RemovePostFix(":00")}"; a.TrackTimeZone = $"GTM {flag}{timeZoneStr.RemovePostFix(":00")}";
} }
}); });
return list; return list;
} }
return new List<TrackOrderDetailDto>(); return new List<TrackOrderDetailDto>();
@ -115,4 +120,21 @@ public class TrackOrderService : ApplicationService
} }
#endregion #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> /// </summary>
public int SubSystemId { get; set; } public int SubSystemId { get; set; }
///// <summary>
///// 单号
///// </summary>
//public List<string>? OrderNos { get; set; }
/// <summary> /// <summary>
/// 当tab选中 0 默认不传 1 直接写死传值 [1,4] 2 传 [2,4] /// 当tab选中 0 默认不传 1 直接写死传值 [1,4] 2 传 [2,4]
/// </summary> /// </summary>
public int TabType { get; set; } public int TabType { get; set; }
///// <summary>
///// 当tab选中 1 直接写死传值 [1,4] 2 传 [2,4]
///// </summary>
//public List<int>? QuestionTypeIds { get; set; }
/// <summary> /// <summary>
/// 订单类型 /// 订单类型
/// </summary> /// </summary>
@ -142,25 +132,5 @@
/// 轨迹模板Id数组 /// 轨迹模板Id数组
/// </summary> /// </summary>
public List<int>? TrackTemplateIds { get; set; } 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; namespace SJZY.Track.Domain.Enums;
[Flags] [Flags]
public enum TrackPushProblemType public enum TrackProblemType
{ {
/// <summary> /// <summary>
/// 没问题 /// 没问题

View File

@ -10,4 +10,10 @@ public interface ITrackOrderQueries
/// <param name="input"></param> /// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
Task<UnifyPageResultDto<TrackOrderVO>> GetPageTrackOrder(GetPageTrackOrderInputVO input); 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; int ques = 0;
if (!input.OrderNos.IsNullOrWhiteSpace()) if (!input.OrderNos.IsNullOrWhiteSpace())
{ {
orderNoList = input.OrderNos!.Split(new[] { ',', ',', ':', ':' }).ToList(); orderNoList = input.OrderNos!.Split(',', ',', ':', ':').ToList();
} }
if (input.TabType == 1) if (input.TabType == 1)
@ -63,16 +63,9 @@ public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries,
Id = a.Id, Id = a.Id,
OrderNumber = a.OrderNo, OrderNumber = a.OrderNo,
OrderType = a.OrderType, 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, CustomerShortName = b.Abbreviation,
CustomerCode = b.Code, CustomerCode = b.Code,
CustomerId = a.CustomId, 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, NewestTrackContent = a.LatestTrackContent,
NewestTrackEnContent = a.LatestTrackEnContent, NewestTrackEnContent = a.LatestTrackEnContent,
NewestTrackPlace = a.LatestTrackPlace, NewestTrackPlace = a.LatestTrackPlace,
@ -105,4 +98,16 @@ public class TrackOrderQueries : ISugarRepository, ITrackOrderQueries,
return pageList; 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();
}
} }