Browse Source

任务 90 市州通用-即将超期/超期列表等页面增加查询条件

tangjiang 4 months ago
parent
commit
4ee3e6a50c

+ 33 - 6
src/Hotline.Application/Orders/OrderApplication.cs

@@ -338,9 +338,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title.Contains(dto.Title!))
             .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 == 1, d => d.OrderDelays.Any() == true)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
-            //&& stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value
-            //.Where(d => d.ExpiredTime != null &&
-            //         d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited && stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value)
+            .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
+            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
+            .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone.Contains(dto.FromPhone)) //来电号码
+            .WhereIF(!string.IsNullOrEmpty(dto.HotspotName), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.HotspotName))
+            .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+            .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门
+                                                                                                                           //&& stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value
+                                                                                                                           //.Where(d => d.ExpiredTime != null &&
+                                                                                                                           //         d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited && stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value)
             .Where(d => d.Status < EOrderStatus.Filed && dateTime > d.NearlyExpiredTime && dateTime < d.ExpiredTime)
             .Where(d => d.Status < EOrderStatus.Filed && dateTime > d.NearlyExpiredTime && dateTime < d.ExpiredTime)
             .OrderByIF(dto is { SortField: "no", SortRule: 0 }, x => x.No, OrderByType.Asc) //工单编号升序
             .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: "no", SortRule: 1 }, x => x.No, OrderByType.Desc) //工单编号降序
@@ -413,9 +421,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title.Contains(dto.Title!))
             .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 == 1, d => d.OrderDelays.Any() == true)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
-            //&& stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value
-            //.Where(d => d.ExpiredTime != null &&
-            //         d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited && stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value)
+            .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
+            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
+            .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone.Contains(dto.FromPhone)) //来电号码
+            .WhereIF(!string.IsNullOrEmpty(dto.HotspotName), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.HotspotName))
+            .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart) //超期时间开始
+            .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd) //超期时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门
+             //&& stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value
+             //.Where(d => d.ExpiredTime != null &&
+            // d.Status != EOrderStatus.Filed && d.Status != EOrderStatus.Published && d.Status != EOrderStatus.Visited && stTime >= d.ExpiredTime.Value && stTime2 <= d.ExpiredTime.Value)
             .Where(d => d.Status < EOrderStatus.Filed && dateTime > d.NearlyExpiredTime && dateTime < d.ExpiredTime)
             .Where(d => d.Status < EOrderStatus.Filed && dateTime > d.NearlyExpiredTime && dateTime < d.ExpiredTime)
             .OrderByIF(dto is { SortField: "no", SortRule: 0 }, x => x.No, OrderByType.Asc) //工单编号升序
             .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: "no", SortRule: 1 }, x => x.No, OrderByType.Desc) //工单编号降序
@@ -507,6 +523,17 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Title.Contains(dto.Title!))
             .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 == 1, d => d.OrderDelays.Any() == true)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
             .WhereIF(dto.Delay.HasValue && dto.Delay == 2, d => d.OrderDelays.Any() == false)
+            .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart) //受理时间开始
+            .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.AcceptType), d => d.AcceptTypeCode == dto.AcceptType) //受理类型
+            .WhereIF(!string.IsNullOrEmpty(dto.FromPhone), d => d.FromPhone.Contains(dto.FromPhone)) //来电号码
+            .WhereIF(!string.IsNullOrEmpty(dto.HotspotName), d => d.HotspotSpliceName != null && d.HotspotSpliceName.Contains(dto.HotspotName))
+            .WhereIF(dto.FiledTimeStart.HasValue, d => d.FiledTime >= dto.FiledTimeStart)//办结时间开始
+            .WhereIF(dto.FiledTimeEnd.HasValue, d => d.FiledTime <= dto.FiledTimeEnd)//办结时间结束
+            .WhereIF(!string.IsNullOrEmpty(dto.ActualHandleOrgName), d => d.ActualHandleOrgName.Contains(dto.ActualHandleOrgName)) //接办部门
+            .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status) //工单状态
+           .WhereIF(!string.IsNullOrEmpty(dto.CurrentStepCode), d => d.CurrentStepCode == dto.CurrentStepCode) //当前办理节点
+
             .Where(d => d.Status < EOrderStatus.Filed)
             .Where(d => d.Status < EOrderStatus.Filed)
             .Where(d => d.ExpiredTime != null &&
             .Where(d => d.ExpiredTime != null &&
                         (((d.Status == EOrderStatus.Filed || d.Status == EOrderStatus.Published || d.Status == EOrderStatus.Visited) &&
                         (((d.Status == EOrderStatus.Filed || d.Status == EOrderStatus.Published || d.Status == EOrderStatus.Visited) &&

+ 131 - 126
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -24,6 +24,7 @@ using XF.Domain.Authentications;
 using XF.Domain.Dependency;
 using XF.Domain.Dependency;
 using XF.Domain.Repository;
 using XF.Domain.Repository;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using Hotline.SeedData;
 
 
 namespace Hotline.Repository.SqlSugar.Orders
 namespace Hotline.Repository.SqlSugar.Orders
 {
 {
@@ -37,7 +38,7 @@ namespace Hotline.Repository.SqlSugar.Orders
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly ISystemSettingCacheManager _systemSettingCacheManager;
         private readonly IRepository<AiOrderVisitDetail> _aiOrderVisitDetailRepository;
         private readonly IRepository<AiOrderVisitDetail> _aiOrderVisitDetailRepository;
 
 
-		public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
+        public OrderRepository(ISugarUnitOfWork<HotlineDbContext> uow,
             IDataPermissionFilterBuilder dataPermissionFilterBuilder,
             IDataPermissionFilterBuilder dataPermissionFilterBuilder,
             IRepository<OrderSendBackAudit> orderSendBackAuditRepository,
             IRepository<OrderSendBackAudit> orderSendBackAuditRepository,
             IRepository<OrderVisit> orderVisitRepository,
             IRepository<OrderVisit> orderVisitRepository,
@@ -45,7 +46,7 @@ namespace Hotline.Repository.SqlSugar.Orders
             IRepository<OrderVisitDetail> orderVisitDetailRepository,
             IRepository<OrderVisitDetail> orderVisitDetailRepository,
             ISystemSettingCacheManager systemSettingCacheManager,
             ISystemSettingCacheManager systemSettingCacheManager,
             IRepository<AiOrderVisitDetail> aiOrderVisitDetailRepository
             IRepository<AiOrderVisitDetail> aiOrderVisitDetailRepository
-			) : base(uow, dataPermissionFilterBuilder)
+            ) : base(uow, dataPermissionFilterBuilder)
         {
         {
             _dataPermissionFilterBuilder = dataPermissionFilterBuilder;
             _dataPermissionFilterBuilder = dataPermissionFilterBuilder;
             _orderSendBackAuditRepository = orderSendBackAuditRepository;
             _orderSendBackAuditRepository = orderSendBackAuditRepository;
@@ -1059,40 +1060,40 @@ namespace Hotline.Repository.SqlSugar.Orders
         /// <returns></returns>
         /// <returns></returns>
         public ISugarQueryable<OrderCenterAcceptHourVo> OrderCenterAcceptHour(OrderCenterAcceptPagedRequest dto)
         public ISugarQueryable<OrderCenterAcceptHourVo> OrderCenterAcceptHour(OrderCenterAcceptPagedRequest dto)
         {
         {
-	        if (dto.EndTime.HasValue)
-		        dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
-	        var sendBack = _orderSendBackAuditRepository.Queryable()
-		        .Where(x => x.State == ESendBackAuditState.End)
-		        .GroupBy(x => x.OrderId).Select(x => new { OrderId = x.OrderId });
-
-	        List<int> dts = new();
-	        for (int i = 0; i < 24; i++)
-	        {
-		        dts.Add(i);
-	        }
-
-	        var listHour = Db.Reportable(dts).ToQueryable<int>();
-
-	        var data = Db.Queryable<Order>()
-				.LeftJoin(sendBack, (d, s) => d.Id == s.OrderId)
-		        .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, d => d.CreationTime >= dto.StartTime && d.CreationTime <= dto.EndTime)
-		        .WhereIF(dto.TypeCode != null && dto.TypeCode == 1, d => d.IdentityType == EIdentityType.Citizen)
-		        .WhereIF(dto.TypeCode != null && dto.TypeCode == 2, d => d.IdentityType == EIdentityType.Enterprise)
-		        .GroupBy(d => d.CreationTime.Hour.ToString())
-		        .Select((d, s) => new OrderCenterAcceptHourVo
-				{
-			        Hour = d.CreationTime.Hour.ToString(),
-			        AcceptNum = SqlFunc.AggregateCount(1),
-			        ValidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType != "无效", 1, 0)),
-			        RepetitionNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.DuplicateIds == null || SqlFunc.JsonArrayLength(d.DuplicateIds) > 0, 1, 0)),
-			        InvalidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType == "无效", 1, 0)),
-			        HandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status >= EOrderStatus.Filed, 1, 0)),
-			        NoHandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status < EOrderStatus.Filed, 1, 0)),
-			        BackNum = SqlFunc.AggregateSum(SqlFunc.IIF(s.OrderId != null && s.OrderId != "", 1, 0)),
-			        DutyDeskNum = SqlFunc.AggregateDistinctCount(d.AcceptorId)
-				});
+            if (dto.EndTime.HasValue)
+                dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
+            var sendBack = _orderSendBackAuditRepository.Queryable()
+                .Where(x => x.State == ESendBackAuditState.End)
+                .GroupBy(x => x.OrderId).Select(x => new { OrderId = x.OrderId });
+
+            List<int> dts = new();
+            for (int i = 0; i < 24; i++)
+            {
+                dts.Add(i);
+            }
+
+            var listHour = Db.Reportable(dts).ToQueryable<int>();
+
+            var data = Db.Queryable<Order>()
+                .LeftJoin(sendBack, (d, s) => d.Id == s.OrderId)
+                .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, d => d.CreationTime >= dto.StartTime && d.CreationTime <= dto.EndTime)
+                .WhereIF(dto.TypeCode != null && dto.TypeCode == 1, d => d.IdentityType == EIdentityType.Citizen)
+                .WhereIF(dto.TypeCode != null && dto.TypeCode == 2, d => d.IdentityType == EIdentityType.Enterprise)
+                .GroupBy(d => d.CreationTime.Hour.ToString())
+                .Select((d, s) => new OrderCenterAcceptHourVo
+                {
+                    Hour = d.CreationTime.Hour.ToString(),
+                    AcceptNum = SqlFunc.AggregateCount(1),
+                    ValidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType != "无效", 1, 0)),
+                    RepetitionNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.DuplicateIds == null || SqlFunc.JsonArrayLength(d.DuplicateIds) > 0, 1, 0)),
+                    InvalidNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.AcceptType == "无效", 1, 0)),
+                    HandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status >= EOrderStatus.Filed, 1, 0)),
+                    NoHandleNum = SqlFunc.AggregateSum(SqlFunc.IIF(d.Status < EOrderStatus.Filed, 1, 0)),
+                    BackNum = SqlFunc.AggregateSum(SqlFunc.IIF(s.OrderId != null && s.OrderId != "", 1, 0)),
+                    DutyDeskNum = SqlFunc.AggregateDistinctCount(d.AcceptorId)
+                });
             var query = listHour.LeftJoin(data, (h, d) => h.ColumnName.ToString() == d.Hour)
             var query = listHour.LeftJoin(data, (h, d) => h.ColumnName.ToString() == d.Hour)
-                 .GroupBy((h,d)=> h.ColumnName)
+                 .GroupBy((h, d) => h.ColumnName)
                  .OrderBy((h, d) => h.ColumnName)
                  .OrderBy((h, d) => h.ColumnName)
                  .Select((h, d) => new OrderCenterAcceptHourVo
                  .Select((h, d) => new OrderCenterAcceptHourVo
                  {
                  {
@@ -1105,10 +1106,10 @@ namespace Hotline.Repository.SqlSugar.Orders
                      NoHandleNum = SqlFunc.AggregateSum(d.NoHandleNum),
                      NoHandleNum = SqlFunc.AggregateSum(d.NoHandleNum),
                      BackNum = SqlFunc.AggregateSum(d.BackNum),
                      BackNum = SqlFunc.AggregateSum(d.BackNum),
                      DutyDeskNum = SqlFunc.AggregateSum(d.DutyDeskNum)
                      DutyDeskNum = SqlFunc.AggregateSum(d.DutyDeskNum)
-				 });
-			return query;
+                 });
+            return query;
         }
         }
-		public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
+        public ISugarQueryable<SelectOrderId> OrderListUnionAll(ISugarQueryable<SelectOrderId> t1, ISugarQueryable<SelectOrderId> t2)
         {
         {
             return Db.UnionAll(t1, t2).Select(it => new SelectOrderId { Id = it.Id }).MergeTable();
             return Db.UnionAll(t1, t2).Select(it => new SelectOrderId { Id = it.Id }).MergeTable();
         }
         }
@@ -1152,11 +1153,11 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), x => x.Contact == dto.PhoneNo!) //联系电话
                 .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo), x => x.Contact == dto.PhoneNo!) //联系电话
                 .WhereIF(dto.IdentityType.HasValue, x => x.IdentityType == dto.IdentityType) //来电主体
                 .WhereIF(dto.IdentityType.HasValue, x => x.IdentityType == dto.IdentityType) //来电主体
                 .WhereIF(dto.FromGender.HasValue, x => x.FromGender == dto.FromGender) //来电性别
                 .WhereIF(dto.FromGender.HasValue, x => x.FromGender == dto.FromGender) //来电性别
-                //.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.PushTypeCode == dto.PushTypeCode)//推送分类
-                .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.OrderPushTypes.Any(opt=>opt.PushTypeCode  == dto.PushTypeCode))//推送分类
-				.WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Normal,x=> (x.ExpiredTime.HasValue && DateTime.Now < x.ExpiredTime && x.Status>= EOrderStatus.Filed) || (x.NearlyExpiredTime.HasValue && DateTime.Now < x.NearlyExpiredTime && x.Status< EOrderStatus.Filed)) //超期状态:正常
-                .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.GoingToExpired,x=> (x.Status< EOrderStatus.Filed && DateTime.Now> x.NearlyExpiredTime && DateTime.Now < x.ExpiredTime) || (x.Status >= EOrderStatus.Filed && x.FiledTime > x.NearlyExpiredTime && x.FiledTime< x.ExpiredTime)) // 超期状态:即将超期
-                .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Expired,x=> (x.Status< EOrderStatus.Filed && DateTime.Now > x.ExpiredTime) || (x.Status>= EOrderStatus.Filed && x.FiledTime > x.ExpiredTime))
+                                                                                       //.WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.PushTypeCode == dto.PushTypeCode)//推送分类
+                .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), x => x.OrderPushTypes.Any(opt => opt.PushTypeCode == dto.PushTypeCode))//推送分类
+                .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Normal, x => (x.ExpiredTime.HasValue && DateTime.Now < x.ExpiredTime && x.Status >= EOrderStatus.Filed) || (x.NearlyExpiredTime.HasValue && DateTime.Now < x.NearlyExpiredTime && x.Status < EOrderStatus.Filed)) //超期状态:正常
+                .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.GoingToExpired, x => (x.Status < EOrderStatus.Filed && DateTime.Now > x.NearlyExpiredTime && DateTime.Now < x.ExpiredTime) || (x.Status >= EOrderStatus.Filed && x.FiledTime > x.NearlyExpiredTime && x.FiledTime < x.ExpiredTime)) // 超期状态:即将超期
+                .WhereIF(dto.ExpiredStatus.HasValue && dto.ExpiredStatus == EExpiredStatusEx.Expired, x => (x.Status < EOrderStatus.Filed && DateTime.Now > x.ExpiredTime) || (x.Status >= EOrderStatus.Filed && x.FiledTime > x.ExpiredTime))
                 .Select(x => new OrderDataInventoryRep()
                 .Select(x => new OrderDataInventoryRep()
                 {
                 {
                     Id = x.Id,
                     Id = x.Id,
@@ -1168,7 +1169,7 @@ namespace Hotline.Repository.SqlSugar.Orders
                     CurrentStepName = x.CurrentStepName,
                     CurrentStepName = x.CurrentStepName,
                     ReTransactNum = x.ReTransactNum,
                     ReTransactNum = x.ReTransactNum,
                     //甄别状态
                     //甄别状态
-                    OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q=>q.OrderId == x.Id).OrderByDesc(q=>q.CreationTime).Select(q=>q.Status), //x.OrderScreens.FirstOrDefault().Status,
+                    OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == x.Id).OrderByDesc(q => q.CreationTime).Select(q => q.Status), //x.OrderScreens.FirstOrDefault().Status,
                     No = x.No,
                     No = x.No,
                     ProvinceNo = x.ProvinceNo,
                     ProvinceNo = x.ProvinceNo,
                     CreationTime = x.CreationTime,
                     CreationTime = x.CreationTime,
@@ -1193,11 +1194,11 @@ namespace Hotline.Repository.SqlSugar.Orders
                     //坐席评价
                     //坐席评价
                     SeatEvaluate = SqlFunc.Subqueryable<OrderVisitDetail>()
                     SeatEvaluate = SqlFunc.Subqueryable<OrderVisitDetail>()
                           .Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Seat)
                           .Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Seat)
-                          .Select(w =>w.SeatEvaluate),
+                          .Select(w => w.SeatEvaluate),
                     //办结结果
                     //办结结果
                     OrgProcessingResults = SqlFunc.Subqueryable<OrderVisitDetail>()
                     OrgProcessingResults = SqlFunc.Subqueryable<OrderVisitDetail>()
                           .Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Org)
                           .Where(w => w.VisitId == SqlFunc.Subqueryable<OrderVisit>().Where(q => q.OrderId == x.Id && q.VisitState == EVisitState.Visited).Select(q => q.Id) && w.VisitTarget == EVisitTarget.Org)
-                          .Select(w =>SqlFunc.JsonField(w.OrgProcessingResults,"Value")),
+                          .Select(w => SqlFunc.JsonField(w.OrgProcessingResults, "Value")),
                     PushType = x.PushType,
                     PushType = x.PushType,
                     Content = x.Content,
                     Content = x.Content,
                     ActualOpinion = x.ActualOpinion,
                     ActualOpinion = x.ActualOpinion,
@@ -1258,7 +1259,11 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .Includes(x => x.OrderVisit, x => x.Employee)
                 .Includes(x => x.OrderVisit, x => x.Employee)
                 .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
                 .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
                 .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.RequiredOrgId))
                 .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(_sessionContext.RequiredOrgId))
-                .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
+                // .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
+                .WhereIF(dto.OrgVisitStatisticsType.HasValue && dto.OrgVisitStatisticsType == EOrgVisitStatisticsType.CallCenter,
+                    x => x.OrderVisit.Order.ActualHandleOrgCode == OrgSeedData.CenterId)
+                .WhereIF(dto.OrgVisitStatisticsType.HasValue && dto.OrgVisitStatisticsType == EOrgVisitStatisticsType.Org,
+                    x => x.OrderVisit.Order.ActualHandleOrgCode != OrgSeedData.CenterId)
                 .WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
                 .WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
                 .WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
                 .WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
                 .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
                 .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
@@ -1267,17 +1272,17 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
                 .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
                 .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
                 .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
                 .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
-                .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//受理类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//来源渠道
                 .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
                 .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
                 .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
                 .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
                 .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
                 .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
                 .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
                 .WhereIF(dto.ActualHandleTimeEnd.HasValue, x => x.OrderVisit.Order.ActualHandleTime <= dto.ActualHandleTimeEnd)//办结时间结束
                 .WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
                 .WhereIF(dto.VisitTimeStart.HasValue, x => x.OrderVisit.VisitTime >= dto.VisitTimeStart) //回访时间
                 .WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
                 .WhereIF(dto.VisitTimeEnd.HasValue, x => x.OrderVisit.VisitTime < dto.VisitTimeEnd) //回访时间
-                .WhereIF(dto.VisitType != null,x=>x.OrderVisit.VisitType == dto.VisitType) //回访方式
+                .WhereIF(dto.VisitType != null, x => x.OrderVisit.VisitType == dto.VisitType) //回访方式
                 .Select(x => new OrgVisitDetailListResp()
                 .Select(x => new OrgVisitDetailListResp()
                 {
                 {
-                    Id =  x.Id,
+                    Id = x.Id,
                     OrderId = x.OrderVisit.Order.Id,
                     OrderId = x.OrderVisit.Order.Id,
                     VisitId = x.OrderVisit.Id,
                     VisitId = x.OrderVisit.Id,
                     No = x.OrderVisit.No,
                     No = x.OrderVisit.No,
@@ -1333,7 +1338,7 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .WhereIF(dto.TypeId is 1, x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.DateValue)
                 .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(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)
                 .WhereIF(!string.IsNullOrEmpty(dto.LineNum), x => x.OrderVisit.Order.CallRecord.Gateway == dto.LineNum)
-                .WhereIF(dto.VisitType!= null,x=> x.OrderVisit.VisitType == dto.VisitType)
+                .WhereIF(dto.VisitType != null, x => x.OrderVisit.VisitType == dto.VisitType)
                 .Select(x => new OrgVisitDetailListResp
                 .Select(x => new OrgVisitDetailListResp
                 {
                 {
                     Id = x.Id,
                     Id = x.Id,
@@ -1366,68 +1371,68 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc); //办结时间降序;
                 .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc); //办结时间降序;
         }
         }
 
 
-		/// <summary>
-		/// 部门满意度明细 排除不满意 非常不满意 未作评价
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		public ISugarQueryable<OrgVisitDetailListResp> OrgVisitDetailFiltrationList(OrgVisitDetailListReq dto, string orgId)
-		{
-			var IsCenter = _sessionContext.OrgIsCenter;
-			var hiddenOrder = _systemSettingCacheManager.GetSetting(SettingConstants.OrgVisitDetailHiddenOrderNo).SettingValue;
-
-			return _orderVisitDetailRepository.Queryable()
-				.Includes(x => x.OrderVisit, x => x.Order)
-				.Includes(x => x.OrderVisit, x => x.Employee)
-				.Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
-                .WhereIF(hiddenOrder.Any(), x =>!hiddenOrder.Contains(x.OrderVisit.Order.No))
+        /// <summary>
+        /// 部门满意度明细 排除不满意 非常不满意 未作评价
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        public ISugarQueryable<OrgVisitDetailListResp> OrgVisitDetailFiltrationList(OrgVisitDetailListReq dto, string orgId)
+        {
+            var IsCenter = _sessionContext.OrgIsCenter;
+            var hiddenOrder = _systemSettingCacheManager.GetSetting(SettingConstants.OrgVisitDetailHiddenOrderNo).SettingValue;
+
+            return _orderVisitDetailRepository.Queryable()
+                .Includes(x => x.OrderVisit, x => x.Order)
+                .Includes(x => x.OrderVisit, x => x.Employee)
+                .Where(x => x.OrderVisit.VisitState == EVisitState.Visited && x.VisitTarget == EVisitTarget.Org)
+                .WhereIF(hiddenOrder.Any(), x => !hiddenOrder.Contains(x.OrderVisit.Order.No))
                 .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(orgId))
                 .WhereIF(IsCenter == false, x => x.VisitOrgCode.StartsWith(orgId))
-				.WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
-				.WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
-				.WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
-				.WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
-				.WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
-				.WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
-				.WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
-				.WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
-				.WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//受理类型
-				.WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
-				.WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
-				.WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
-				.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) //回访时间
-                    //特殊需求:要求新增查询条件【一级部门】,如查询【富顺县人民政府】则显示该一级部门以及下级部门的工单数据
-                .WhereIF(!string.IsNullOrEmpty(dto.LevelOneOrg), x=> x.OrderVisit.Order.OrgLevelOneName == dto.LevelOneOrg || x.OrderVisit.Order.OrgLevelOneCode == dto.LevelOneOrg)
-				
-				.Where(x=> SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "2" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "-1" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "0" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "7")
-				.Where(x=>x.VisitOrgCode.StartsWith(orgId))
-				.Select(x => new OrgVisitDetailListResp()
-				{
-					Id = x.Id,
+                .WhereIF(dto.OrgVisitStatisticsType.HasValue, x => x.OrderVisit.Order.ProcessType == (EProcessType)((int)dto.OrgVisitStatisticsType))
+                .WhereIF(dto.Keyword.NotNullOrEmpty(), x => x.OrderVisit.Order.Title.Contains(dto.Keyword)) // 根据关键字匹配
+                .WhereIF(dto.TypeCode != 0, x => x.OrderVisit.Order.IdentityType == (EIdentityType)dto.TypeCode)
+                .WhereIF(!string.IsNullOrEmpty(dto.OrgProcessingResults), dto.AttitudeType == EAttitudeType.ProcessingResult ? x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") == dto.OrgProcessingResults : x => SqlFunc.JsonField(x.OrgHandledAttitude, "Key") == dto.OrgProcessingResults)
+                .WhereIF(!string.IsNullOrEmpty(dto.VisitUser), x => x.OrderVisit.Employee.Name.Contains(dto.VisitUser))
+                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.OrderVisit.Order.No == dto.No)
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.OrderVisit.Order.Title.Contains(dto.Title))
+                .WhereIF(!string.IsNullOrEmpty(dto.OrgId), x => x.VisitOrgCode == dto.OrgId)//接办部门
+                .WhereIF(!string.IsNullOrEmpty(dto.Hotspot), x => x.OrderVisit.Order.HotspotSpliceName != null && x.OrderVisit.Order.HotspotSpliceName.Contains(dto.Hotspot))//热点类型
+                .WhereIF(!string.IsNullOrEmpty(dto.Channel), x => x.OrderVisit.Order.SourceChannelCode == dto.Channel)//受理类型
+                .WhereIF(dto.CreationTimeStart.HasValue, x => x.OrderVisit.Order.CreationTime >= dto.CreationTimeStart) //受理时间开始
+                .WhereIF(dto.CreationTimeEnd.HasValue, x => x.OrderVisit.Order.CreationTime <= dto.CreationTimeEnd) //受理时间结束
+                .WhereIF(dto.ActualHandleTimeStart.HasValue, x => x.OrderVisit.Order.ActualHandleTime >= dto.ActualHandleTimeStart) //办结时间开始
+                .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) //回访时间
+                                                                                                    //特殊需求:要求新增查询条件【一级部门】,如查询【富顺县人民政府】则显示该一级部门以及下级部门的工单数据
+                .WhereIF(!string.IsNullOrEmpty(dto.LevelOneOrg), x => x.OrderVisit.Order.OrgLevelOneName == dto.LevelOneOrg || x.OrderVisit.Order.OrgLevelOneCode == dto.LevelOneOrg)
+
+                .Where(x => SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "2" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "-1" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "0" && SqlFunc.JsonField(x.OrgProcessingResults, "Key") != "7")
+                .Where(x => x.VisitOrgCode.StartsWith(orgId))
+                .Select(x => new OrgVisitDetailListResp()
+                {
+                    Id = x.Id,
                     OrderId = x.OrderVisit.Order.Id,
                     OrderId = x.OrderVisit.Order.Id,
-					VisitId = x.OrderVisit.Id,
-					No = x.OrderVisit.No,
-					ReTransactNum = x.OrderVisit.Order.ReTransactNum,
-					OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == x.OrderVisit.OrderId && q.VisitDetailId == x.Id).OrderByDesc(q => q.CreationTime).Select(q => q.Status),
-					VisitContent = x.VisitContent,
-					HotspotSpliceName = x.OrderVisit.Order.HotspotSpliceName,
-					OrgLevelOneName = x.OrderVisit.Order.OrgLevelOneName,
-					CurrentHandleOrgName = x.OrderVisit.Order.CurrentHandleOrgName,
-					CreationTime = x.OrderVisit.Order.CreationTime,
-					Title = x.OrderVisit.Order.Title,
-					VisitUser = x.OrderVisit.Employee.Name,
-					VisitType = x.OrderVisit.VisitType,
-					VisitTime = x.OrderVisit.VisitTime,
-					OrgProcessingResults = dto.AttitudeType == EAttitudeType.ProcessingResult ? SqlFunc.JsonField(x.OrgProcessingResults, "Value")
-					: SqlFunc.JsonField(x.OrgHandledAttitude, "Value"),
-					Content = x.OrderVisit.Order.Content,
-					FileOpinion = x.OrderVisit.Order.FileOpinion,
-					FiledTime = x.OrderVisit.Order.FiledTime,
-					VisitOrgName = x.VisitOrgName,
-					ActualHandleOrgName = x.OrderVisit.Order.ActualHandleOrgName
-				}).MergeTable()
+                    VisitId = x.OrderVisit.Id,
+                    No = x.OrderVisit.No,
+                    ReTransactNum = x.OrderVisit.Order.ReTransactNum,
+                    OrderScreenStatus = SqlFunc.Subqueryable<OrderScreen>().Where(q => q.OrderId == x.OrderVisit.OrderId && q.VisitDetailId == x.Id).OrderByDesc(q => q.CreationTime).Select(q => q.Status),
+                    VisitContent = x.VisitContent,
+                    HotspotSpliceName = x.OrderVisit.Order.HotspotSpliceName,
+                    OrgLevelOneName = x.OrderVisit.Order.OrgLevelOneName,
+                    CurrentHandleOrgName = x.OrderVisit.Order.CurrentHandleOrgName,
+                    CreationTime = x.OrderVisit.Order.CreationTime,
+                    Title = x.OrderVisit.Order.Title,
+                    VisitUser = x.OrderVisit.Employee.Name,
+                    VisitType = x.OrderVisit.VisitType,
+                    VisitTime = x.OrderVisit.VisitTime,
+                    OrgProcessingResults = dto.AttitudeType == EAttitudeType.ProcessingResult ? SqlFunc.JsonField(x.OrgProcessingResults, "Value")
+                    : SqlFunc.JsonField(x.OrgHandledAttitude, "Value"),
+                    Content = x.OrderVisit.Order.Content,
+                    FileOpinion = x.OrderVisit.Order.FileOpinion,
+                    FiledTime = x.OrderVisit.Order.FiledTime,
+                    VisitOrgName = x.VisitOrgName,
+                    ActualHandleOrgName = x.OrderVisit.Order.ActualHandleOrgName
+                }).MergeTable()
                 .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.VisitTime, OrderByType.Desc)
                 .OrderByIF(string.IsNullOrEmpty(dto.SortField), x => x.VisitTime, OrderByType.Desc)
                 .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, x => x.CreationTime, OrderByType.Asc) //受理时间升序
                 .OrderByIF(dto is { SortField: "creationTime", SortRule: 0 }, x => x.CreationTime, OrderByType.Asc) //受理时间升序
                 .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, x => x.CreationTime, OrderByType.Desc) //受理时间降序
                 .OrderByIF(dto is { SortField: "creationTime", SortRule: 1 }, x => x.CreationTime, OrderByType.Desc) //受理时间降序
@@ -1437,7 +1442,7 @@ namespace Hotline.Repository.SqlSugar.Orders
                 .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc) //办结时间降序
                 .OrderByIF(dto is { SortField: "filedTime", SortRule: 1 }, x => x.FiledTime, OrderByType.Desc) //办结时间降序
                 ;
                 ;
 
 
-		}
+        }
 
 
         /// <summary>
         /// <summary>
         /// 智能回访数据统计
         /// 智能回访数据统计
@@ -1446,14 +1451,14 @@ namespace Hotline.Repository.SqlSugar.Orders
         /// <returns></returns>
         /// <returns></returns>
         public async Task<QueryAiVisitStatisticsResp> QueryAiVisitStatistics(QueryAiVisitStatisticsRequest dto)
         public async Task<QueryAiVisitStatisticsResp> QueryAiVisitStatistics(QueryAiVisitStatisticsRequest dto)
         {
         {
-            var list = await _aiOrderVisitDetailRepository.Queryable().Includes(x=>x.OrderVisit).Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.OrderVisit.VisitState == EVisitState.Visited).ToListAsync();
+            var list = await _aiOrderVisitDetailRepository.Queryable().Includes(x => x.OrderVisit).Where(x => x.CreationTime >= dto.StartTime && x.CreationTime <= dto.EndTime && x.OrderVisit.VisitState == EVisitState.Visited).ToListAsync();
             return new QueryAiVisitStatisticsResp()
             return new QueryAiVisitStatisticsResp()
             {
             {
                 AiVisitCount = list.Count,
                 AiVisitCount = list.Count,
-                AiVisitSuccessCount = list.Where(x=>x.OrderVisit.IsEffectiveAiVisit==true).Count(), // SqlFunc.AggregateSum(SqlFunc.IIF(x.OrderVisit.IsEffectiveAiVisit == true, 1, 0)),
+                AiVisitSuccessCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == true).Count(), // SqlFunc.AggregateSum(SqlFunc.IIF(x.OrderVisit.IsEffectiveAiVisit == true, 1, 0)),
                 AiVisitArtificialReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false).Count(),
                 AiVisitArtificialReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false).Count(),
-                AiVisitCallReviewCount = list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == false && !string.IsNullOrEmpty(x.OrderVisit.CallId)).Count(),
-                AiVisitHandReviewCount = list.Where(x=>x.OrderVisit.IsEffectiveAiVisit == false && string.IsNullOrEmpty(x.OrderVisit.CallId)).Count()
+                AiVisitCallReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false && !string.IsNullOrEmpty(x.OrderVisit.CallId)).Count(),
+                AiVisitHandReviewCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false && string.IsNullOrEmpty(x.OrderVisit.CallId)).Count()
             };
             };
         }
         }
 
 
@@ -1468,17 +1473,17 @@ namespace Hotline.Repository.SqlSugar.Orders
             return new QueryAiVisitEffectiveAnalysisResp()
             return new QueryAiVisitEffectiveAnalysisResp()
             {
             {
                 AiVisitCount = list.Count,
                 AiVisitCount = list.Count,
-                AiVisitSuccessCount =list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == true).Count(),
-                AiVisitCallTwoFailCount = list.Where(x=> x.CallTimes>=1 && x.AiIsContact ==null && x.AiVolved ==null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)).Count(),
-                AiVisitHaveOneAnswerCount = list.Where(x=>x.OrderVisit.IsEffectiveAiVisit == false &&
-                                                                            (x.AiIsContact!= null && x.AiVolved==null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults.Key == null)) ||
+                AiVisitSuccessCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == true).Count(),
+                AiVisitCallTwoFailCount = list.Where(x => x.CallTimes >= 1 && x.AiIsContact == null && x.AiVolved == null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)).Count(),
+                AiVisitHaveOneAnswerCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false &&
+                                                                            (x.AiIsContact != null && x.AiVolved == null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults.Key == null)) ||
                                                                             (x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
                                                                             (x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
                                                                             (x.AiIsContact == null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(), //只有一个答案
                                                                             (x.AiIsContact == null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(), //只有一个答案
-                AiVisitHaveTwoAnswerCount = list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == false &&
+                AiVisitHaveTwoAnswerCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false &&
                                                                             (x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
                                                                             (x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults == null || x.AiOrgProcessingResults?.Key == null)) ||
                                                                             (x.AiIsContact != null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)) ||
                                                                             (x.AiIsContact != null && x.AiVolved == null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)) ||
                                                                             (x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(),//只有两个答案
                                                                             (x.AiIsContact == null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null))).Count(),//只有两个答案
-                AiVisitHaveThreeAnswerCount = list.Where(x=> x.OrderVisit.IsEffectiveAiVisit == false && x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)).Count()//有三个答案
+                AiVisitHaveThreeAnswerCount = list.Where(x => x.OrderVisit.IsEffectiveAiVisit == false && x.AiIsContact != null && x.AiVolved != null && (x.AiOrgProcessingResults != null || x.AiOrgProcessingResults?.Key != null)).Count()//有三个答案
             };
             };
         }
         }
 
 
@@ -1493,12 +1498,12 @@ namespace Hotline.Repository.SqlSugar.Orders
 
 
     public class OrderTerminateRepository : BaseRepositoryWorkflow<OrderTerminate>, IOrderTerminateRepository, IScopeDependency
     public class OrderTerminateRepository : BaseRepositoryWorkflow<OrderTerminate>, IOrderTerminateRepository, IScopeDependency
     {
     {
-	    public OrderTerminateRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
-	    {
-	    }
+        public OrderTerminateRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
+        {
+        }
     }
     }
 
 
-	public class OrderDelayRepository : BaseRepositoryWorkflow<OrderDelay>, IOrderDelayRepository, IScopeDependency
+    public class OrderDelayRepository : BaseRepositoryWorkflow<OrderDelay>, IOrderDelayRepository, IScopeDependency
     {
     {
         public OrderDelayRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
         public OrderDelayRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
         {
         {

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

@@ -594,6 +594,54 @@ public class AboutToExpireDto : OrderDto
 
 
 public record AboutToExpireListDto : PagedKeywordRequest
 public record AboutToExpireListDto : PagedKeywordRequest
 {
 {
+    /// <summary>
+    /// 受理时间(工单创建时间)
+    /// </summary>
+    public DateTime? CreationTimeStart { get; set; }
+    public DateTime? CreationTimeEnd { get; set; }
+
+    /// <summary>
+    /// 期满时间
+    /// </summary>
+    public DateTime? ExpiredTimeStart { get; set; }
+    public DateTime? ExpiredTimeEnd { get; set; }
+
+    /// <summary>
+	/// 归档时间
+	/// </summary>
+	public DateTime? FiledTimeStart { get; set; }
+    public DateTime? FiledTimeEnd { get; set; }
+
+    /// <summary>
+    /// 工单状态
+    /// </summary>
+    public EOrderStatus? Status { get; set; }
+
+    /// <summary>
+    /// 当前办理节点
+    /// </summary>
+    public string? CurrentStepCode { get; set; }
+
+    /// <summary>
+    /// 接办部门
+    /// </summary>
+    public string? ActualHandleOrgName { get; set; }
+
+    /// <summary>
+    /// 受理类型
+    /// </summary>
+    public string? AcceptType { get; set; }
+
+    /// <summary>
+    /// 热点类型
+    /// </summary>
+    public string? HotspotName { get; set; }
+
+    /// <summary>
+    /// 来电号码
+    /// </summary>
+    public string? FromPhone { get; set; }
+
     /// <summary>
     /// <summary>
     /// 是否为省工单
     /// 是否为省工单
     /// </summary>
     /// </summary>