田爽 1 yıl önce
ebeveyn
işleme
4d0dceffd7
1 değiştirilmiş dosya ile 61 ekleme ve 6 silme
  1. 61 6
      src/Hotline.Api/Controllers/OrderController.cs

+ 61 - 6
src/Hotline.Api/Controllers/OrderController.cs

@@ -2828,14 +2828,69 @@ public class OrderController : BaseController
         return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
     }
 
-    #endregion
-
-    #region 业务工单退回
-
     /// <summary>
-    /// 工单退回退回(返回前一节点)
+    /// 首页查询
     /// </summary>
-    [HttpPost("order_previous")]
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    [HttpGet("waited/home")]
+
+    public async Task<Object> QueryWaitedHome([FromQuery] QueryOrderWaitedDto dto) {
+
+		var isHandled = dto.IsHandled.HasValue && dto.IsHandled.Value;
+		var (total, items) = await _orderRepository
+			.Queryable(viewFilter: true, handlerFilter: !isHandled)
+			.Includes(d => d.OrderSpecials)
+			.WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
+			.WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword) || d.Title.Contains(dto.Keyword))
+			.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)
+			.Where(d => d.OrderSpecials.Any() == false || d.OrderSpecials.Any(s => s.State == 0) == false)
+			.OrderByDescending(d => d.StartTime)
+			.ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+		var page1=  new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+
+		EOrderStatus[] handleStatuses = EnumExts.GetFields<EOrderStatus>().Select(d => (EOrderStatus)d.Key).ToArray();
+		handleStatuses = handleStatuses.WhereIF(dto.IsHandled.HasValue,
+				d => dto.IsHandled!.Value
+					? d is not EOrderStatus.WaitForAccept and not EOrderStatus.BackToUnAccept and not EOrderStatus.SpecialToUnAccept
+					: d is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept)
+			.ToArray();
+
+		var (total2, items2) = await _orderRepository.Queryable(viewFilter: false)
+			.WhereIF(dto.IsProvince.HasValue, d => d.IsProvince == dto.IsProvince)
+			.WhereIF(dto.IsHandled.HasValue, d => handleStatuses.Contains(d.Status))
+			.WhereIF(!string.IsNullOrEmpty(dto.Keyword), d => d.No.Contains(dto.Keyword!) || d.Title.Contains(dto.Keyword!))
+			.Where(d => string.IsNullOrEmpty(d.SignerId) || d.SignerId == _sessionContext.RequiredUserId)
+			.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(x => x.Source < ESource.MLSQ || x.Source > ESource.WZSC)
+			.Where(x => x.Status != EOrderStatus.BackToProvince)
+			.OrderBy(d => d.Status)
+			.OrderByIF(dto.IsHandled == true, d => d.StartTime, OrderByType.Asc)
+			.OrderByIF(dto.IsHandled == false, d => d.CreationTime, OrderByType.Desc)
+			.ToPagedListAsync(dto, HttpContext.RequestAborted);
+
+		var page2 = new PagedDto<OrderDto>(total2, _mapper.Map<IReadOnlyList<OrderDto>>(items2));
+
+        return new { Waited = page1, Sign = page2 };
+	}
+
+	#endregion
+
+	#region 业务工单退回
+
+	/// <summary>
+	/// 工单退回退回(返回前一节点)
+	/// </summary>
+	[HttpPost("order_previous")]
     public async Task Previous([FromBody] OrderPreviousDto dto)
     {
         var oneSendBack = bool.Parse(_systemSettingCacheManager.GetSetting(SettingConstants.OneOrgSendBack)?.SettingValue[0]);