田爽 1 gadu atpakaļ
vecāks
revīzija
e771bfbc24

+ 45 - 0
src/Hotline.Api/Controllers/OrderController.cs

@@ -2096,7 +2096,12 @@ public class OrderController : BaseController
 		var model = _mapper.Map<OrderSpecial>(dto);
         model.OrgId = _sessionContext.OrgId;
         model.OrgName = _sessionContext.OrgName;
+        if (!dto.Audit) model.State = 1;
         await _orderSpecialRepository.AddAsync(model, HttpContext.RequestAborted);
+        if (model.State == 1)
+        {
+	        //TODO 调用流程
+        }
 	}
 
 	/// <summary>
@@ -2139,6 +2144,46 @@ public class OrderController : BaseController
 		return new PagedDto<OrderSpecialDto>(total, _mapper.Map<IReadOnlyList<OrderSpecialDto>>(items));
 	}
 
+	/// <summary>
+	/// 工单列表
+	/// </summary>
+	/// <param name="dto"></param>
+	/// <returns></returns>
+	[HttpGet("special/apply_list")]
+	public async Task<PagedDto<OrderDto>> SpecialList([FromQuery] QueryOrderDto dto)
+	{
+        var query = _orderRepository.Queryable()
+           .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
+               d => d.Title.Contains(dto.Keyword!) || d.No.Contains(dto.Keyword!))
+           .WhereIF(!string.IsNullOrEmpty(dto.Content), d => d.Content.Contains(dto.Content!))
+           .WhereIF(dto.AcceptTypes.Any(), d => dto.AcceptTypes.Contains(d.AcceptType))
+           .WhereIF(dto.Channels.Any(), d => dto.Channels.Contains(d.SourceChannel))
+           .WhereIF(dto.HotspotIds.Any(), d => dto.HotspotIds.Contains(d.HotspotId))
+           .WhereIF(!string.IsNullOrEmpty(dto.TransferPhone), d => d.TransferPhone.Contains(dto.TransferPhone!))
+           .WhereIF(dto.OrgCodes.Any(), d => dto.OrgCodes.Contains(d.Workflow.ActualHandleOrgCode))
+           .WhereIF(!string.IsNullOrEmpty(dto.NameOrNo),
+               d => d.AcceptorName.Contains(dto.NameOrNo!) || d.AcceptorStaffNo.Contains(dto.NameOrNo!))
+           .WhereIF(dto.CreationTimeStart.HasValue, d => d.CreationTime >= dto.CreationTimeStart)
+           .WhereIF(dto.CreationTimeEnd.HasValue, d => d.CreationTime <= dto.CreationTimeEnd)
+           .WhereIF(dto.EmergencyLevels.Any(), d => dto.EmergencyLevels.Contains(d.EmergencyLevel))
+           .WhereIF(!string.IsNullOrEmpty(dto.PhoneNo),
+               d => d.FromPhone.Contains(dto.PhoneNo!) || d.Contact.Contains(dto.PhoneNo!))
+           .WhereIF(!string.IsNullOrEmpty(dto.PushTypeCode), d => d.PushTypeCode == dto.PushTypeCode)
+           .WhereIF(dto.ExpiredTimeStart.HasValue, d => d.ExpiredTime >= dto.ExpiredTimeStart)
+           .WhereIF(dto.ExpiredTimeEnd.HasValue, d => d.ExpiredTime <= dto.ExpiredTimeEnd)
+           .WhereIF(dto.Statuses.Any(), d => dto.Statuses.Contains(d.Status))
+           .WhereIF(dto.Statuses.Any(d => d == EOrderStatus.BackToUnAccept), d => d.Status <= EOrderStatus.BackToUnAccept);
+        if (!_sessionContext.OrgIsCenter && _sessionContext.OrgId.Length >= 6)
+        {
+            var oneCode = _sessionContext.OrgId.Substring(0, 6);
+            query = query.Where(x => x.AcceptorOrgCode.StartsWith(oneCode) && !x.AcceptorOrgCode.StartsWith(_sessionContext.OrgId));
+        }
+        var (total, items) = await query
+			.OrderByDescending(d => d.CreationTime)
+			.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+		return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+	}
+
 	/// <summary>
 	/// 获取工单特提信息
 	/// </summary>

+ 5 - 0
src/Hotline.Share/Dtos/Order/OrderSpecialDto.cs

@@ -30,6 +30,11 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		public string? Reason { get; set; }
 
+		/// <summary>
+		/// 是否审批
+		/// </summary>
+		public bool Audit { get; set; } = false;
+
 		/// <summary>
 		/// 附件列表
 		/// </summary>