Pārlūkot izejas kodu

fix: 工单待办临时解决

xf 10 mēneši atpakaļ
vecāks
revīzija
0dc894a166
1 mainītis faili ar 69 papildinājumiem un 19 dzēšanām
  1. 69 19
      src/Hotline.Api/Controllers/OrderController.cs

+ 69 - 19
src/Hotline.Api/Controllers/OrderController.cs

@@ -3024,26 +3024,76 @@ public class OrderController : BaseController
         if (dto.EndTime.HasValue)
             dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
 
-        var (total, items) = await _orderRepository
-            .Queryable(hasHandled: !isHandled)
-            .Includes(d => d.OrderSpecials)
-            .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
-            .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
-            .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
-            .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
-            .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
-            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
-            .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
-            .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
-            .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
-            //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
-            .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
-            .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
-            .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
-            .OrderByDescending(d => d.StartTime)
-            .ToPagedListAsync(dto, HttpContext.RequestAborted);
+        //var (total, items) = await _orderRepository
+        //    .Queryable(hasHandled: !isHandled)
+        //    .Includes(d => d.OrderSpecials)
+        //    .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
+        //    .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
+        //    .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
+        //    .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
+        //    .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
+        //    .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
+        //    .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
+        //    .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
+        //    .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
+        //    //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
+        //    .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
+        //    .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
+        //    .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
+        //    .OrderByDescending(d => d.StartTime)
+        //    .ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+        if (!isHandled)
+        {
+            var (total, items) = await _orderRepository
+                .Queryable(hasHandled: !isHandled)
+                .Includes(d => d.OrderSpecials)
+                .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
+                .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
+                .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
+                .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
+                .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
+                .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
+                .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
+                .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
+                .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
+                //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
+                .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
+                .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
+                .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
+                .OrderByDescending(d => d.StartTime)
+                .ToPagedListAsync(dto, HttpContext.RequestAborted);
+            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+        }
+        else
+        {
+            var (total, items) = await _orderRepository.Queryable()
+                .Where(d => SqlFunc.Subqueryable<WorkflowStep>()
+                    .Where(step => step.ExternalId == d.Id &&
+                                                                 ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == _sessionContext.RequiredUserId) ||
+                                                                  (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == _sessionContext.RequiredOrgId) ||
+                                                                  (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && _sessionContext.Roles.Contains(step.RoleId))) &&
+                                                                 step.Status == EWorkflowStepStatus.Handled).Any())
+                .Includes(d => d.OrderSpecials)
+                .WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
+                .WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.Title.StartsWith(dto.Keyword))
+                .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.No == dto.No)
+                .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == true, d => d.CounterSignType.HasValue)
+                .WhereIF(dto.IsCounterSign.HasValue && dto.IsCounterSign == false, d => !d.CounterSignType.HasValue)
+                .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == true, d => (d.ExpiredTime < DateTime.Now && d.Status < EOrderStatus.Filed) || (d.ExpiredTime < d.ActualHandleTime && d.Status >= EOrderStatus.Filed)) //超期 未办
+                .WhereIF(dto.ExpiredOrAlmostOverdue.HasValue && dto.ExpiredOrAlmostOverdue == false, d => d.NearlyExpiredTime < DateTime.Now && d.ExpiredTime > DateTime.Now)//即将超期 未办
+                .Where(d => d.Source < ESource.MLSQ || d.Source > ESource.WZSC)
+                .Where(d => d.Status != EOrderStatus.BackToProvince && d.Status < EOrderStatus.Filed)
+                //.Where(d => SqlFunc.Subqueryable<OrderSpecial>().Where(os => os.OrderId == d.Id).NotAny())
+                .Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State > 0))
+                .WhereIF(dto.StartTime.HasValue, d => d.StartTime >= dto.StartTime)
+                .WhereIF(dto.EndTime.HasValue, d => d.StartTime <= dto.EndTime)
+                .OrderByDescending(d => d.StartTime)
+
+                .ToPagedListAsync(dto, HttpContext.RequestAborted);
+            return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+        }
 
-        return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 
     /// <summary>