diff --git a/src/SJZY.Track.Application.Contract/Dtos/TrackOrder/GetTrackCounterOutput.cs b/src/SJZY.Track.Application.Contract/Dtos/TrackOrder/GetTrackCounterOutput.cs
new file mode 100644
index 00000000..e330fabb
--- /dev/null
+++ b/src/SJZY.Track.Application.Contract/Dtos/TrackOrder/GetTrackCounterOutput.cs
@@ -0,0 +1,19 @@
+namespace SJZY.Track.Application.Contract.Dtos.TrackOrder;
+
+public class GetTrackCounterOutput
+{
+ ///
+ /// 总条数
+ ///
+ public int TotalCount { get; set; }
+
+ ///
+ /// 异常数
+ ///
+ public int ErrorCount { get; set; }
+
+ ///
+ /// 预警数
+ ///
+ public int WarnCount { get; set; }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Application/EventHandlers/TrackPushAfterUpdateOrderEventHandler.cs b/src/SJZY.Track.Application/EventHandlers/TrackPushAfterUpdateOrderEventHandler.cs
index a514639e..268db6c1 100644
--- a/src/SJZY.Track.Application/EventHandlers/TrackPushAfterUpdateOrderEventHandler.cs
+++ b/src/SJZY.Track.Application/EventHandlers/TrackPushAfterUpdateOrderEventHandler.cs
@@ -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:只有新增会影响推送进度?
diff --git a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
index 9c24046b..6ce154dd 100644
--- a/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
+++ b/src/SJZY.Track.Application/Services/ProvideServices/TrackPushService.cs
@@ -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 });
diff --git a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
index e799aeea..029d5523 100644
--- a/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
+++ b/src/SJZY.Track.Application/Services/TrackOrders/TrackOrderService.cs
@@ -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>(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();
@@ -115,4 +120,21 @@ public class TrackOrderService : ApplicationService
}
#endregion
+
+ ///
+ /// 获取轨迹计数器
+ ///
+ ///
+ [HttpGet]
+ public async Task 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,
+ };
+ }
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs
index 3dd85154..06cfe9e9 100644
--- a/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs
+++ b/src/SJZY.Track.Domain/Dtos/Order/GetPageTrackOrderInputVO.cs
@@ -7,21 +7,11 @@
///
public int SubSystemId { get; set; }
- /////
- ///// 单号
- /////
- //public List? OrderNos { get; set; }
-
///
/// 当tab选中 0 默认不传 1 直接写死传值 [1,4] 2 传 [2,4]
///
public int TabType { get; set; }
- /////
- ///// 当tab选中 1 直接写死传值 [1,4] 2 传 [2,4]
- /////
- //public List? QuestionTypeIds { get; set; }
-
///
/// 订单类型
///
@@ -142,25 +132,5 @@
/// 轨迹模板Id数组
///
public List? TrackTemplateIds { get; set; }
-
- ///
- /// 问题类型(主数据枚举TrackQuestionType)
- ///
- public int QuestionType { get; set; }
-
- ///
- /// 问题类型名称
- ///
- public string? QuestionTypeName { get; set; }
-
- ///
- /// 问题描述(主数据枚举TrackProblemDescription)
- ///
- public string? ProblemDescription { get; set; }
-
- ///
- /// 问题描述名称
- ///
- public string? ProblemDescriptionName { get; set; }
}
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Dtos/Order/GetTrackCounterVO.cs b/src/SJZY.Track.Domain/Dtos/Order/GetTrackCounterVO.cs
new file mode 100644
index 00000000..67cc8496
--- /dev/null
+++ b/src/SJZY.Track.Domain/Dtos/Order/GetTrackCounterVO.cs
@@ -0,0 +1,14 @@
+namespace SJZY.Track.Domain.Dtos.Order;
+
+public class GetTrackCounterVO
+{
+ ///
+ /// 问题类型
+ ///
+ public int ProblemType { get; set; }
+
+ ///
+ /// 总条数
+ ///
+ public int Count { get; set; }
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Enums/OrderType.cs b/src/SJZY.Track.Domain/Enums/OrderType.cs
new file mode 100644
index 00000000..072aba6b
--- /dev/null
+++ b/src/SJZY.Track.Domain/Enums/OrderType.cs
@@ -0,0 +1,6 @@
+namespace SJZY.Track.Domain.Enums;
+
+public enum OrderType
+{
+ 干线提单 = 1
+}
\ No newline at end of file
diff --git a/src/SJZY.Track.Domain/Enums/TrackPushProblemType.cs b/src/SJZY.Track.Domain/Enums/TrackProblemType.cs
similarity index 88%
rename from src/SJZY.Track.Domain/Enums/TrackPushProblemType.cs
rename to src/SJZY.Track.Domain/Enums/TrackProblemType.cs
index 93bbdbcb..10087ba0 100644
--- a/src/SJZY.Track.Domain/Enums/TrackPushProblemType.cs
+++ b/src/SJZY.Track.Domain/Enums/TrackProblemType.cs
@@ -1,7 +1,7 @@
namespace SJZY.Track.Domain.Enums;
[Flags]
-public enum TrackPushProblemType
+public enum TrackProblemType
{
///
/// 没问题
diff --git a/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs b/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs
index 45309ad5..b521d97d 100644
--- a/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs
+++ b/src/SJZY.Track.Domain/Queries/ITrackOrderQueries.cs
@@ -10,4 +10,10 @@ public interface ITrackOrderQueries
///
///
Task> GetPageTrackOrder(GetPageTrackOrderInputVO input);
+
+ ///
+ /// 获取轨迹各个问题数
+ ///
+ ///
+ Task> GetTrackProblemCountsAsync();
}
\ No newline at end of file
diff --git a/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs b/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs
index 108026b9..2542a33e 100644
--- a/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs
+++ b/src/SJZY.Track.Repository/Queries/TrackOrderQueries.cs
@@ -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> GetTrackProblemCountsAsync()
+ {
+ return await Context.Queryable()
+ .GroupBy(x => x.QuestionType)
+ .Select(x => new GetTrackCounterVO
+ {
+ ProblemType = x.QuestionType,
+ Count = SqlFunc.AggregateCount(1)
+ })
+ .ToListAsync();
+ }
}
\ No newline at end of file