Selaa lähdekoodia

自定义排序

Dun.Jason 5 kuukautta sitten
vanhempi
commit
55d0ea5be0

+ 30 - 5
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -2230,7 +2230,13 @@ namespace Hotline.Api.Controllers.Bi
 
             var queryData = await _orderReportApplication.GetDepartmentalProcessingStatisticsListNew(dto, HttpContext.RequestAborted)
                         .LeftJoin<Order>((x, o) => x.Id == o.Id)
-                        .OrderByDescending((x, o) => o.CreationTime)
+                        .OrderByIF(string.IsNullOrEmpty(dto.SortField), (x, o) => o.CreationTime, OrderByType.Desc)
+                        .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, (x, o) => o.StartTime, OrderByType.Asc) //受理时间升序
+                        .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, (x, o) => o.StartTime, OrderByType.Desc) //受理时间降序
+                        .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, (x, o) => o.ExpiredTime, OrderByType.Asc) //工单期满时间升序
+                        .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, (x, o) => o.ExpiredTime, OrderByType.Desc) //工单期满时间降序
+                        .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, (x, o) => o.FiledTime, OrderByType.Asc)// 办结时间升序
+                        .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, (x, o) => o.FiledTime, OrderByType.Desc) //办结时间降序
                          .Select((x, o) => new { o })
                         .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
 
@@ -2252,7 +2258,13 @@ namespace Hotline.Api.Controllers.Bi
         {
             var query = _orderReportApplication.GetDepartmentalProcessingStatisticsListNew(dto.QueryDto, HttpContext.RequestAborted)
                  .LeftJoin<Order>((x, o) => x.Id == o.Id)
-                 .OrderByDescending((x, o) => o.CreationTime)
+                .OrderByIF(string.IsNullOrEmpty(dto.QueryDto.SortField), (x, o) => o.CreationTime, OrderByType.Desc)
+                .OrderByIF(dto.QueryDto is { SortField: "startTime", SortRule: 0 }, (x, o) => o.StartTime, OrderByType.Asc) //受理时间升序
+                .OrderByIF(dto.QueryDto is { SortField: "startTime", SortRule: 1 }, (x, o) => o.StartTime, OrderByType.Desc) //受理时间降序
+                .OrderByIF(dto.QueryDto is { SortField: "expiredTime", SortRule: 0 }, (x, o) => o.ExpiredTime, OrderByType.Asc) //工单期满时间升序
+                .OrderByIF(dto.QueryDto is { SortField: "expiredTime", SortRule: 1 }, (x, o) => o.ExpiredTime, OrderByType.Desc) //工单期满时间降序
+                .OrderByIF(dto.QueryDto is { SortField: "filedTime", SortRule: 0 }, (x, o) => o.FiledTime, OrderByType.Asc)// 办结时间升序
+                .OrderByIF(dto.QueryDto is { SortField: "filedTime", SortRule: 1 }, (x, o) => o.FiledTime, OrderByType.Desc) //办结时间降序
                  .Select((x, o) => new { o });
             List<OrderDto> list = new List<OrderDto>();
             if (dto.IsExportAll)
@@ -2299,8 +2311,15 @@ namespace Hotline.Api.Controllers.Bi
 
             var queryData = await _orderReportApplication.DepartmentalProcessingStatisticsDetailsList(dto)
                         .LeftJoin<Order>((x, o) => x.Id == o.Id)
-                        .OrderByDescending((x, o) => o.CreationTime)
-                         .Select((x, o) => new { o })
+                        .OrderByIF(string.IsNullOrEmpty(dto.SortField),(x,o)=> o.CreationTime,OrderByType.Desc)
+                        .OrderByIF(dto is { SortField : "startTime", SortRule :0 },(x,o)=> o.StartTime,OrderByType.Asc) //受理时间升序
+                        .OrderByIF(dto is { SortField : "startTime", SortRule: 1 }, (x, o) => o.StartTime, OrderByType.Desc) //受理时间降序
+                        .OrderByIF(dto is { SortField: "expiredTime", SortRule:0 },(x,o)=> o.ExpiredTime,OrderByType.Asc) //工单期满时间升序
+                        .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, (x, o) => o.ExpiredTime, OrderByType.Desc) //工单期满时间降序
+                        .OrderByIF(dto is { SortField: "filedTime",SortRule:0 },(x,o)=> o.FiledTime,OrderByType.Asc)// 办结时间升序
+                        .OrderByIF(dto is { SortField: "filedTime",SortRule:1 },(x,o)=> o.FiledTime,OrderByType.Desc) //办结时间降序
+                        .Select((x, o) => new { o })
+                        
                         .ToPageListAsync(dto.PageIndex, dto.PageSize, total, HttpContext.RequestAborted);
 
             var dtos = queryData.Select(d =>
@@ -2321,7 +2340,13 @@ namespace Hotline.Api.Controllers.Bi
         {
             var query = _orderReportApplication.DepartmentalProcessingStatisticsDetailsList(dto.QueryDto)
                   .LeftJoin<Order>((x, o) => x.Id == o.Id)
-                  .OrderByDescending((x, o) => o.CreationTime)
+                  .OrderByIF(string.IsNullOrEmpty(dto.QueryDto.SortField), (x, o) => o.CreationTime, OrderByType.Desc)
+                        .OrderByIF(dto.QueryDto is { SortField: "startTime", SortRule: 0 }, (x, o) => o.StartTime, OrderByType.Asc) //受理时间升序
+                        .OrderByIF(dto.QueryDto is { SortField: "startTime", SortRule: 1 }, (x, o) => o.StartTime, OrderByType.Desc) //受理时间降序
+                        .OrderByIF(dto.QueryDto is { SortField: "expiredTime", SortRule: 0 }, (x, o) => o.ExpiredTime, OrderByType.Asc) //工单期满时间升序
+                        .OrderByIF(dto.QueryDto is { SortField: "expiredTime", SortRule: 1 }, (x, o) => o.ExpiredTime, OrderByType.Desc) //工单期满时间降序
+                        .OrderByIF(dto.QueryDto is { SortField: "filedTime", SortRule: 0 }, (x, o) => o.FiledTime, OrderByType.Asc)// 办结时间升序
+                        .OrderByIF(dto.QueryDto is { SortField: "filedTime", SortRule: 1 }, (x, o) => o.FiledTime, OrderByType.Desc) //办结时间降序
                   .Select((x, o) => new { o });
             var list = new List<OrderDto>();
             if (dto.IsExportAll)

+ 17 - 4
src/Hotline.Api/Controllers/OrderController.cs

@@ -4070,7 +4070,14 @@ public class OrderController : BaseController
             .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
             .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
             .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
-            .OrderByDescending(d => new { d.IsUrgent, d.StartTime })
+            .OrderByDescending(d=> d.IsUrgent)
+            .OrderByIF(string.IsNullOrEmpty(dto.SortField),d => d.StartTime ,OrderByType.Desc)
+            .OrderByIF(dto is { SortField: "creationTime", SortRule:0 },d=> d.CreationTime,OrderByType.Asc) //创建时间升序
+            .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, d => d.CreationTime, OrderByType.Desc) //创建时间降序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, d => d.StartTime, OrderByType.Asc) //受理时间升序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, d => d.StartTime, OrderByType.Desc) //受理时间降序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, d => d.ExpiredTime, OrderByType.Asc) //期满时间升序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, d => d.ExpiredTime, OrderByType.Desc) //期满时间降序
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
@@ -4160,7 +4167,11 @@ public class OrderController : BaseController
             .WhereIF(!string.IsNullOrEmpty(dto.CenterToOrgHandlerName), d => d.CenterToOrgHandlerName == dto.CenterToOrgHandlerName)
             .WhereIF(dto.IsUrgent.HasValue, d => d.IsUrgent == dto.IsUrgent!.Value)
             .OrderBy(d => d.Status)
-            .OrderBy(d => d.CreationTime, OrderByType.Desc)
+            .OrderByIF(string.IsNullOrEmpty(dto.SortField),d => d.CreationTime, OrderByType.Desc)
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, d => d.StartTime, OrderByType.Asc) //受理时间升序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, d => d.StartTime, OrderByType.Desc) //受理时间降序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, d => d.ExpiredTime, OrderByType.Asc) //期满时间升序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, d => d.ExpiredTime, OrderByType.Desc) //期满时间降序
             .ToPagedListAsync(dto, HttpContext.RequestAborted);
 
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
@@ -6286,7 +6297,8 @@ public class OrderController : BaseController
     [HttpGet("order/about_expire/list")]
     public async Task<PagedDto<OrderDto>> AboutList([FromQuery] AboutToExpireListDto dto)
     {
-        var (total, items) = await _orderApplication.GetAboutToExpireAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
+        var (total, items) = await _orderApplication.GetAboutToExpireAsync(dto)
+            .ToPagedListAsync(dto, HttpContext.RequestAborted);
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 
@@ -6338,7 +6350,8 @@ public class OrderController : BaseController
     [HttpGet("order/expire/list")]
     public async Task<PagedDto<OrderDto>> ExpireList([FromQuery] AboutToExpireListDto dto)
     {
-        var (total, items) = await _orderApplication.GetToExpireAsync(dto).ToPagedListAsync(dto, HttpContext.RequestAborted);
+        var (total, items) = await _orderApplication.GetToExpireAsync(dto)
+            .ToPagedListAsync(dto, HttpContext.RequestAborted);
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 

+ 84 - 8
src/Hotline.Application/Orders/OrderApplication.cs

@@ -329,7 +329,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         var orgCode = _sessionContextProvider.SessionContext.OrgId;
         return _orderRepository.Queryable(canView: !IsCenter).Includes(d => d.OrderDelays)
 
-            .WhereIF(orgLevel ==3,d => SqlFunc.Subqueryable<WorkflowStep>()
+            .WhereIF(orgLevel == 3, d => SqlFunc.Subqueryable<WorkflowStep>()
                 .Where(step => step.ExternalId == d.Id && step.Status != EWorkflowStepStatus.Handled &&
                                ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) &&
                                  step.HandlerId == _sessionContextProvider.SessionContext.RequiredUserId) ||
@@ -338,14 +338,39 @@ public class OrderApplication : IOrderApplication, IScopeDependency
                                 (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) &&
                                  _sessionContextProvider.SessionContext.Roles.Contains(step.RoleId))))
                 .Any())
-            .WhereIF(orgLevel == 1 || orgLevel == 2, d=> d.ActualHandleOrgCode.StartsWith(orgCode))
+            .WhereIF(orgLevel == 1 || orgLevel == 2, d => d.ActualHandleOrgCode.StartsWith(orgCode))
             .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
             .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No.Contains(dto.No!))
             .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title.Contains(dto.Title!))
             .WhereIF(dto.Delay.HasValue && dto.Delay == 1, d => d.OrderDelays.Any() == true)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
             .Where(d => d.Status < EOrderStatus.Filed && dateTime > d.NearlyExpiredTime && dateTime < d.ExpiredTime)
-            .OrderBy(d => d.ExpiredTime);
+            .OrderByIF(dto is { SortField: "no", SortRule: 0 }, x => x.No, OrderByType.Asc) //工单编号升序
+            .OrderByIF(dto is { SortField: "no", SortRule: 1 }, x => x.No, OrderByType.Desc) //工单编号降序
+            .OrderByIF(dto is { SortField: "isProvinceText", SortRule: 0 }, x => x.IsProvince, OrderByType.Asc)//是否省工单升序
+            .OrderByIF(dto is { SortField: "isProvinceText", SortRule: 1 }, x => x.IsProvince, OrderByType.Desc)//是否省工单降序
+            .OrderByIF(dto is { SortField: "currentStepName", SortRule: 0 }, x => x.CurrentStepName, OrderByType.Asc)//当前节点升序
+            .OrderByIF(dto is { SortField: "currentStepName", SortRule: 1 }, x => x.CurrentStepName, OrderByType.Desc)//当前节点降序
+            .OrderByIF(dto is { SortField: "delayText", SortRule: 0 }, x => x.OrderDelays.Count, OrderByType.Asc) //是否延期升序
+            .OrderByIF(dto is { SortField: "delayText", SortRule: 1 }, x => x.OrderDelays.Count, OrderByType.Desc) //是否延期升序
+            .OrderByIF(dto is { SortField: "statusText", SortRule: 0 }, x => x.Status, OrderByType.Asc) //工单状态升序
+            .OrderByIF(dto is { SortField: "statusText", SortRule: 1 }, x => x.Status, OrderByType.Desc) //工单状态升序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc) //受理时间升序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc) //受理时间降序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, x => x.ExpiredTime, OrderByType.Asc) //期满时间升序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, x => x.ExpiredTime, OrderByType.Desc) //期满时间降序
+            .OrderByIF(dto is { SortField: "actualHandleOrgName", SortRule: 0 }, x => x.ActualHandleOrgName, OrderByType.Asc)// 接办部门升序
+            .OrderByIF(dto is { SortField: "actualHandleOrgName", SortRule: 1 }, x => x.ActualHandleOrgName, OrderByType.Desc)// 接办部门降序
+            .OrderByIF(dto is { SortField: "acceptType", SortRule: 0 }, x => x.AcceptTypeCode, OrderByType.Asc) //受理类型升序
+            .OrderByIF(dto is { SortField: "acceptType", SortRule: 1 }, x => x.AcceptTypeCode, OrderByType.Desc) //受理类型降序
+            .OrderByIF(dto is { SortField: "counterSignTypeText", SortRule: 0 }, x => x.CounterSignType, OrderByType.Asc) //是否会签升序
+            .OrderByIF(dto is { SortField: "counterSignTypeText", SortRule: 1 }, x => x.CounterSignType, OrderByType.Desc) //是否会签降序
+            .OrderByIF(dto is { SortField: "orgLevelOneName", SortRule: 0 }, x => x.OrgLevelOneName, OrderByType.Asc) //一级部门升序
+            .OrderByIF(dto is { SortField: "orgLevelOneName", SortRule: 1 }, x => x.OrgLevelOneName, OrderByType.Desc)//一级部门降序
+            .OrderByIF(dto is { SortField: "hotspotName", SortRule: 0 }, x => x.HotspotId, OrderByType.Asc) //热点升序
+            .OrderByIF(dto is { SortField: "hotspotName", SortRule: 1 }, x => x.HotspotId, OrderByType.Desc) //热点降序
+            .OrderByIF(dto is { SortField: "acceptorName", SortRule: 0 }, x => x.AcceptorName, OrderByType.Asc)// 受理人升序
+            .OrderByIF(dto is { SortField: "acceptorName", SortRule: 1 }, x => x.AcceptorName, OrderByType.Desc);// 受理人升序
     }
 
     // /// <summary>
@@ -389,7 +414,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         int orgLevel = _sessionContextProvider.SessionContext.OrgLevel;
         var orgCode = _sessionContextProvider.SessionContext.OrgId;
         return _orderRepository.Queryable(canView: false).Includes(d => d.OrderDelays)
-            .WhereIF(orgLevel == 3 , d => SqlFunc.Subqueryable<WorkflowStep>()
+            .WhereIF(orgLevel == 3, d => SqlFunc.Subqueryable<WorkflowStep>()
                 .Where(step => step.ExternalId == d.Id && step.Status != EWorkflowStepStatus.Handled &&
                                ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) &&
                                  step.HandlerId == _sessionContextProvider.SessionContext.RequiredUserId) ||
@@ -405,13 +430,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
             .WhereIF(dto.Delay.HasValue && dto.Delay == 1, d => d.OrderDelays.Any() == true)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
-            .Where(d=> d.Status < EOrderStatus.Filed)
+            .Where(d => d.Status < EOrderStatus.Filed)
             .Where(d => d.ExpiredTime != null &&
                         (((d.Status == EOrderStatus.Filed || d.Status == EOrderStatus.Published || d.Status == EOrderStatus.Visited) &&
                           d.FiledTime >= d.ExpiredTime) ||
                          ((d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited) &&
                           stTime >= d.ExpiredTime.Value)))
-            .OrderBy(x => x.ExpiredTime);
+
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.StartTime, OrderByType.Asc) //受理时间升序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.StartTime, OrderByType.Desc) //受理时间降序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, x => x.ExpiredTime, OrderByType.Asc) //期满时间升序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, x => x.ExpiredTime, OrderByType.Desc); //期满时间降序
     }
 
     //     /// <summary>
@@ -1091,7 +1120,47 @@ public class OrderApplication : IOrderApplication, IScopeDependency
              .WhereIF(dto.FiledType is FiledType.CenterFiled, d => d.ProcessType == EProcessType.Zhiban)
              .WhereIF(dto.FiledType is FiledType.OrgFiled, d => d.ProcessType == EProcessType.Jiaoban)
              .WhereIF(!string.IsNullOrEmpty(dto.OrderTagCode), d => d.OrderTagCode == dto.OrderTagCode)
-             .OrderByDescending(d => d.CreationTime);
+             .OrderByIF(string.IsNullOrEmpty(dto.SortField), d => d.CreationTime, OrderByType.Desc)//默认排序时间为创建时间
+             .OrderByIF(dto is { SortField: "no", SortRule: 0 }, d => d.No, OrderByType.Asc) //工单编号升序
+             .OrderByIF(dto is { SortField: "no", SortRule: 1 }, d => d.No, OrderByType.Desc) //工单编号降序
+             .OrderByIF(dto is { SortField: "isProvinceText", SortRule: 0 }, d => d.IsProvince, OrderByType.Asc)//是否省工单升序
+             .OrderByIF(dto is { SortField: "isProvinceText", SortRule: 1 }, d => d.IsProvince, OrderByType.Desc)//是否省工单降序
+             .OrderByIF(dto is { SortField: "reTransactNum", SortRule: 0 }, d => d.ReTransactNum, OrderByType.Asc) //重办次数升序
+             .OrderByIF(dto is { SortField: "reTransactNum", SortRule: 1 }, d => d.ReTransactNum, OrderByType.Desc) //重办次数降序
+             .OrderByIF(dto is { SortField: "isUrgentText",SortRule:0 }, d=>d.IsUrgent,OrderByType.Asc) //是否紧急升序
+             .OrderByIF(dto is { SortField: "isUrgentText",SortRule:1 },d=>d.IsUrgent,OrderByType.Desc) //是否紧急降序
+             .OrderByIF(dto is { SortField: "isSecret",SortRule:0 },d=>d.IsSecret,OrderByType.Asc) //是否紧急升序
+             .OrderByIF(dto is { SortField: "isSecret", SortRule: 1 }, d => d.IsSecret, OrderByType.Desc) //是否紧急降序
+             .OrderByIF(dto is { SortField: "currentStepName", SortRule: 0 }, d => d.CurrentStepName, OrderByType.Asc)//当前节点升序
+             .OrderByIF(dto is { SortField: "currentStepName", SortRule: 1 }, d => d.CurrentStepName, OrderByType.Desc)//当前节点降序
+             .OrderByIF(dto is { SortField: "actualStepAcceptText",SortRule:0 },d=>d.ActualHandleStepAcceptTime.HasValue,OrderByType.Asc) //受理情况升序
+             .OrderByIF(dto is { SortField: "actualStepAcceptText", SortRule: 1 }, d => d.ActualHandleStepAcceptTime.HasValue, OrderByType.Desc) //受理情况降序
+             .OrderByIF(dto is { SortField: "statusText",SortRule:0 },d=>d.Status,OrderByType.Asc) //工单状态升序
+             .OrderByIF(dto is { SortField: "statusText",SortRule:1 },d=>d.Status,OrderByType.Desc) //工单状态降序
+             .OrderByIF(dto is { SortField: "startTime",SortRule:0 },d=>d.StartTime,OrderByType.Asc) //受理时间升序
+             .OrderByIF(dto is { SortField: "startTime",SortRule:1 },d=>d.StartTime,OrderByType.Desc) //受理时间降序
+             .OrderByIF(dto is { SortField: "expiredTime",SortRule:0 },d=>d.ExpiredTime,OrderByType.Asc) //超期时间升序
+             .OrderByIF(dto is { SortField: "expiredTime",SortRule:1 },d=>d.ExpiredTime,OrderByType.Desc) //超期时间降序
+             .OrderByIF(dto is { SortField: "filedTime", SortRule:0 },d=>d.FiledTime,OrderByType.Asc) //办结时间升序
+             .OrderByIF(dto is { SortField: "filedTime", SortRule:1 },d=>d.FiledTime,OrderByType.Desc) //办结时间降序
+             .OrderByIF(dto is { SortField: "orgLevelOneName",SortRule:0 },d=>d.OrgLevelOneName,OrderByType.Asc ) //一级部门升序
+             .OrderByIF(dto is { SortField: "orgLevelOneName",SortRule:1 },d=>d.OrgLevelOneName,OrderByType.Desc ) //一级部门降序
+             .OrderByIF(dto is { SortField: "orgLevelTwoName",SortRule:0 },d=>d.OrgLevelTwoName,OrderByType.Asc) //二级部门升序
+             .OrderByIF(dto is { SortField: "orgLevelTwoName",SortRule:1 },d=>d.OrgLevelTwoName,OrderByType.Desc) //二级部门降序
+             .OrderByIF(dto is { SortField: "actualHandleOrgName",SortRule:0 },d=>d.ActualHandleOrgName,OrderByType.Asc) //接办部门升序
+             .OrderByIF(dto is { SortField: "actualHandleOrgName",SortRule:1 },d=>d.ActualHandleOrgName,OrderByType.Desc) //接办部门降序
+             .OrderByIF(dto is { SortField: "acceptType",SortRule:0 },d=>d.AcceptTypeCode,OrderByType.Asc) //受理类型升序
+             .OrderByIF(dto is { SortField: "acceptType",SortRule:1 },d=>d.AcceptTypeCode,OrderByType.Desc) //受理类型降序
+             .OrderByIF(dto is { SortField: "counterSignTypeText",SortRule:0 },d=>d.CounterSignType,OrderByType.Asc) //是否会签升序
+             .OrderByIF(dto is { SortField: "counterSignTypeText",SortRule:1 },d=>d.CounterSignType,OrderByType.Desc) //是否会签降序
+             .OrderByIF(dto is { SortField: "hotspotSpliceName",SortRule:0 },d=>d.HotspotSpliceName,OrderByType.Asc)//热点分类全称升序
+             .OrderByIF(dto is { SortField: "hotspotSpliceName",SortRule:1 },d=>d.HotspotSpliceName,OrderByType.Desc) //热点分类全称降序
+             .OrderByIF(dto is { SortField: "hotspotName",SortRule:0 },d=>d.HotspotName,OrderByType.Asc) //热点分类升序
+             .OrderByIF(dto is { SortField: "hotspotName",SortRule:1 },d=>d.HotspotName,OrderByType.Desc) //热点分类降序
+             .OrderByIF(dto is { SortField: "acceptorName",SortRule:0 },d=>d.AcceptorName,OrderByType.Asc) //受理人升序
+             .OrderByIF(dto is { SortField: "acceptorName",SortRule:1 },d=>d.AcceptorName,OrderByType.Desc) //受理人降序
+             ;
+
 
     }
 
@@ -2764,7 +2833,14 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(dto.TypeCode.HasValue == false, m => m.Status < EOrderStatus.Filed)
             .OrderBy(d => d.Status)
             .OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Desc)
-            .OrderByIF(dto.IsHandled == false, d => new { IsUrgent = d.IsUrgent, CreationTime = d.CreationTime }, OrderByType.Desc)
+            .OrderByIF(dto.IsHandled == false, d => new { IsUrgent = d.IsUrgent }, OrderByType.Desc)
+            .OrderByIF(dto.IsHandled == false && string.IsNullOrEmpty(dto.SortField),d => d.CreationTime,OrderByType.Desc)
+            .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, d => d.CreationTime, OrderByType.Asc) //创建时间升序
+            .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, d => d.CreationTime, OrderByType.Desc) //创建时间降序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, d => d.StartTime, OrderByType.Asc) //受理时间升序
+            .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, d => d.StartTime, OrderByType.Desc) //受理时间降序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 0 }, d => d.ExpiredTime, OrderByType.Asc) //期满时间升序
+            .OrderByIF(dto is { SortField: "expiredTime", SortRule: 1 }, d => d.ExpiredTime, OrderByType.Desc) //期满时间降序
             .Select<OrderListOutDto>();
     }
     #endregion

+ 14 - 2
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -1265,7 +1265,13 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
                 .WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
                 .WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
-                .OrderByDescending(x => x.OrderVisit.VisitTime)
+                .OrderByIF(string.IsNullOrEmpty(dto.SortField),x=>x.OrderVisit.VisitTime,OrderByType.Desc)
+                .OrderByIF(dto is { SortField:"startTime",SortRule:0 },x=>x.OrderVisit.Order.StartTime,OrderByType.Asc) //受理时间升序
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.OrderVisit.Order.StartTime, OrderByType.Desc) //受理时间降序
+                .OrderByIF(dto is { SortField: "visitTime", SortRule: 0 }, x => x.OrderVisit.VisitTime, OrderByType.Asc) //回访时间升序
+                .OrderByIF(dto is { SortField: "visitTime", SortRule: 1 }, x => x.OrderVisit.VisitTime, OrderByType.Desc) //回访时间降序
+                .OrderByIF(dto is { SortField: "filedTime", SortRule:0 },x=>x.OrderVisit.Order.FiledTime,OrderByType.Asc) //办结时间升序
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.OrderVisit.Order.FiledTime, OrderByType.Desc) //办结时间降序
                 .Select(x => new OrgVisitDetailListResp()
                 {
                     Id = x.OrderVisit.Order.Id,
@@ -1315,7 +1321,13 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .WhereIF(dto.TypeId is 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.DateValue)
                 .WhereIF(dto.TypeId is 2, x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.DateValue)
                 .WhereIF(!string.IsNullOrEmpty(dto.LineNum), x => x.OrderVisit.Order.CallRecord.Gateway == dto.LineNum)
-                .OrderByDescending(x => x.OrderVisit.VisitTime)
+                .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.OrderVisit.VisitTime, OrderByType.Desc)
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 0 }, x => x.OrderVisit.Order.StartTime, OrderByType.Asc) //受理时间升序
+                .OrderByIF(dto is { SortField: "startTime", SortRule: 1 }, x => x.OrderVisit.Order.StartTime, OrderByType.Desc) //受理时间降序
+                .OrderByIF(dto is { SortField: "visitTime", SortRule: 0 }, x => x.OrderVisit.VisitTime, OrderByType.Asc) //回访时间升序
+                .OrderByIF(dto is { SortField: "visitTime", SortRule: 1 }, x => x.OrderVisit.VisitTime, OrderByType.Desc) //回访时间降序
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 0 }, x => x.OrderVisit.Order.FiledTime, OrderByType.Asc) //办结时间升序
+                .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.OrderVisit.Order.FiledTime, OrderByType.Desc) //办结时间降序
                 .Select(x => new OrgVisitDetailListResp
                 {
                     Id = x.OrderVisit.Order.Id,

+ 10 - 0
src/Hotline.Share/Dtos/Bi/BiOrderDto.cs

@@ -35,6 +35,16 @@ namespace Hotline.Share.Dtos.Bi
         /// 来电/信人身份0:全部 ,1:市民,2:企业
         /// </summary>
         public int? TypeCode { get; set; }
+
+        /// <summary>
+        /// 排序字段
+        /// </summary>
+        public string? SortField { get; set; }
+
+        /// <summary>
+        /// 排序方式 // 0 升序 1 降序
+        /// </summary>
+        public int? SortRule { get; set; }
     }
 
     public record HighFrequencyCallStatisticsRequest : PagedRequest

+ 11 - 1
src/Hotline.Share/Dtos/Order/OrderWaitedDto.cs

@@ -68,7 +68,17 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		public int? QueryType { get; set; }
 
-	}
+        /// <summary>
+        /// 排序字段
+        /// </summary>
+        public string? SortField { get; set; }
+
+        /// <summary>
+        /// 排序方式 // 0 升序 1 降序
+        /// </summary>
+        public int? SortRule { get; set; }
+
+    }
 
     /// <summary>
     /// 中心待办

+ 10 - 0
src/Hotline.Share/Dtos/Order/PublishedDto.cs

@@ -606,6 +606,16 @@ public record AboutToExpireListDto : PagedKeywordRequest
     /// 0 全部  1 是  2 否
     /// </summary>
     public int? Delay { get; set; }
+
+    /// <summary>
+    /// 排序字段
+    /// </summary>
+    public string? SortField { get; set; } = "expiredTime";
+
+    /// <summary>
+    /// 排序方式 // 0 升序 1 降序
+    /// </summary>
+    public int? SortRule { get; set; } = 0;
 }
 
 public class PublishOrderAllDto

+ 12 - 1
src/Hotline.Share/Dtos/Order/QueryOrderDto.cs

@@ -194,7 +194,18 @@ namespace Hotline.Share.Dtos.Order
         /// 工单标签Code
         /// </summary>
         public string? OrderTagCode { get; set; }
-	}
+
+        /// <summary>
+        /// 排序字段
+        /// </summary>
+        public string? SortField { get; set; }
+
+        /// <summary>
+        /// 排序方式  0 升序 1 降序
+        /// </summary>
+        public int? SortRule { get; set; }
+
+    }
 
 
 	public enum FiledType

+ 10 - 0
src/Hotline.Share/Requests/DepartmentalProcessingStatisticsDto.cs

@@ -255,6 +255,16 @@ namespace Hotline.Share.Requests
         /// 来电/信人身份0:全部 ,1:市民,2:企业
         /// </summary>
         public int? TypeId { get; set; }
+
+        /// <summary>
+        /// 排序字段
+        /// </summary>
+        public string? SortField { get; set; }
+
+        /// <summary>
+        /// 排序方式 0 升序 1 降序
+        /// </summary>
+        public int? SortRule { get; set; }
     }
 
     public class SelectOrderId

+ 10 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -502,6 +502,16 @@ public record OrgVisitDetailListReq: PagedKeywordRequest
     /// 来电主体
     /// </summary>
     public int TypeCode { get; set; }
+
+    /// <summary>
+    /// 排序字段
+    /// </summary>
+    public string? SortField { get; set; }
+
+    /// <summary>
+    /// 排序方式 // 0 升序 1 降序
+    /// </summary>
+    public int? SortRule { get; set; }
 }