田爽 před 6 měsíci
rodič
revize
e1bfc04ca4

+ 3 - 22
src/Hotline.Api/Controllers/OrderTerminateController.cs

@@ -83,7 +83,7 @@ namespace Hotline.Api.Controllers
 			var isAdmin = _orderDomainService.IsCheckAdmin();
 			var (total, items) =await _orderRepository.Queryable(isAdmin:isAdmin)
 				.Includes(d=>d.OrderTerminates)
-				.Where(d=> SqlFunc.Subqueryable<OrderTerminate>().Where(t=>t.Status == ETerminateStatus.End || t.Status == ETerminateStatus.Refuse || t.Status == ETerminateStatus.Approval).NotAny())
+				.Where(d=> SqlFunc.Subqueryable<OrderTerminate>().Where(t=>t.Status != ETerminateStatus.SendBackStart).NotAny())
 				.Where(d => d.Status >= EOrderStatus.Filed && d.ActualHandleOrgCode.StartsWith(_sessionContext.OrgId))
 				.WhereIF(!string.IsNullOrEmpty(dto.No),d=>d.No!.Contains(dto.No!))
 				.WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Title!.Contains(dto.Title!))
@@ -104,18 +104,7 @@ namespace Hotline.Api.Controllers
 		[HttpGet]
 		public async Task<PagedDto<OrderTerminateEntityDto>> OrderTerminateList([FromQuery] OrderTerminateListDto dto)
 		{
-			var isAdmin = _orderDomainService.IsCheckAdmin();
-			var query = _orderTerminateRepository.Queryable(hasHandled: false, isAdmin: isAdmin)
-				.Includes(d => d.Order)
-				.WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Order.No!.Contains(dto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title!.Contains(dto.Title!))
-				.WhereIF(dto.ApplyStartTime.HasValue && dto.ApplyEndTime.HasValue,
-					d => d.CreationTime >= dto.ApplyStartTime && d.CreationTime <= dto.ApplyEndTime)
-				.WhereIF(dto.QueryType is 1, d=>d.CreatorId == _sessionContext.UserId)
-				.WhereIF(dto.Status.HasValue,d=>d.Status == dto.Status)
-				.WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, d => d.Order.StartTime >= dto.StartTime && d.Order.StartTime <= dto.EndTime)
-				.OrderByDescending(d => d.CreationTime);
-			var (total, items) = await query
+			var (total, items) = await _orderApplication.OrderTerminateList(dto)
 				.ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
 			return new PagedDto<OrderTerminateEntityDto>(total, _mapper.Map<IReadOnlyList<OrderTerminateEntityDto>>(items));
 		}
@@ -129,15 +118,7 @@ namespace Hotline.Api.Controllers
 		[HttpPost("export")]
 		public async Task<FileStreamResult> OrderTerminateListExport([FromBody] ExportExcelDto<OrderTerminateListDto> dto)
 		{
-			var isAdmin = _orderDomainService.IsCheckAdmin();
-			var query = _orderTerminateRepository.Queryable(hasHandled: false, isAdmin: isAdmin)
-				.Includes(d => d.Order)
-				.WhereIF(!string.IsNullOrEmpty(dto.QueryDto.No), d => d.Order.No!.Contains(dto.QueryDto.No!))
-				.WhereIF(!string.IsNullOrEmpty(dto.QueryDto.Title), d => d.Order.Title!.Contains(dto.QueryDto.Title!))
-				.WhereIF(dto.QueryDto.ApplyStartTime.HasValue && dto.QueryDto.ApplyEndTime.HasValue,
-					d => d.CreationTime >= dto.QueryDto.ApplyStartTime && d.CreationTime <= dto.QueryDto.ApplyEndTime)
-				.WhereIF(dto.QueryDto.StartTime.HasValue && dto.QueryDto.EndTime.HasValue, d => d.Order.StartTime >= dto.QueryDto.StartTime && d.Order.StartTime <= dto.QueryDto.EndTime)
-				.OrderByDescending(d => d.CreationTime);
+			var query = _orderApplication.OrderTerminateList(dto.QueryDto);
 			List<OrderTerminate> data;
 			if (dto.IsExportAll)
 			{

+ 4 - 0
src/Hotline.Application/Handlers/FlowEngine/WorkflowPreviousHandler.cs

@@ -199,6 +199,10 @@ namespace Hotline.Application.Handlers.FlowEngine
 	                    if (orderTerminate != null)
 	                    {
 		                    orderTerminate.Status = ETerminateStatus.SendBack;
+							if (notification.TargetStep.StepType is EStepType.Start)
+		                    {
+                                orderTerminate.Status = ETerminateStatus.SendBackStart;
+							}
 		                    await _orderTerminateRepository.UpdateAsync(orderTerminate, cancellationToken);
 	                    }
 	                    break;

+ 6 - 1
src/Hotline.Application/Orders/IOrderApplication.cs

@@ -306,7 +306,12 @@ namespace Hotline.Application.Orders
         /// <returns></returns>
         ISugarQueryable<OrderObserve> OrderObserveList(OrderObserveListDto dto);
 
-
+        /// <summary>
+        /// 终止列表
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        ISugarQueryable<OrderTerminate> OrderTerminateList(OrderTerminateListDto dto);
 
 	}
 }

+ 26 - 3
src/Hotline.Application/Orders/OrderApplication.cs

@@ -104,7 +104,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
     private readonly IRepository<OrderSendBackAudit> _orderSendBackAuditRepository;
     private readonly ICalcExpireTime _expireTime;
     private readonly IRepository<OrderObserve> _orderObserveRepository;
-
+    private readonly IOrderTerminateRepository _orderTerminateRepository;
 
 	public OrderApplication(
         IOrderDomainService orderDomainService,
@@ -139,7 +139,8 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         ISystemDicDataCacheManager sysDicDataCacheManager,
         Publisher publisher,
         IRepository<TranspondCityRawData> transpondCityRawDataRepository,
-        IRepository<OrderObserve> orderObserveRepository)
+        IRepository<OrderObserve> orderObserveRepository,
+        IOrderTerminateRepository orderTerminateRepository)
     {
         _orderDomainService = orderDomainService;
         _workflowDomainService = workflowDomainService;
@@ -174,7 +175,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
         _publisher = publisher;
         _transpondCityRawDataRepository = transpondCityRawDataRepository;
         _orderObserveRepository = orderObserveRepository;
-
+        _orderTerminateRepository = orderTerminateRepository;
 	}
 
     /// <summary>
@@ -2341,5 +2342,27 @@ public class OrderApplication : IOrderApplication, IScopeDependency
             .OrderByDescending(d => d.CreationTime);
 	}
 
+    /// <summary>
+    /// 终止列表
+    /// </summary>
+    /// <param name="dto"></param>
+    /// <returns></returns>
+    public ISugarQueryable<OrderTerminate> OrderTerminateList(OrderTerminateListDto dto) 
+    {
+	    var isAdmin = _orderDomainService.IsCheckAdmin();
+		return _orderTerminateRepository.Queryable(hasHandled: false, isAdmin: isAdmin)
+            .Includes(d => d.Order)
+            .WhereIF(!string.IsNullOrEmpty(dto.No), d => d.Order.No!.Contains(dto.No!))
+            .WhereIF(!string.IsNullOrEmpty(dto.Title), d => d.Order.Title!.Contains(dto.Title!))
+            .WhereIF(dto.ApplyStartTime.HasValue && dto.ApplyEndTime.HasValue,
+                d => d.CreationTime >= dto.ApplyStartTime && d.CreationTime <= dto.ApplyEndTime)
+            .WhereIF(dto.AuditStatus is 1 , d=>d.Status == ETerminateStatus.Approval || d.Status == ETerminateStatus.SendBack )
+            .WhereIF(dto.AuditStatus is 2, d => d.Status == ETerminateStatus.End || dto.Status == ETerminateStatus.Refuse)
+			.WhereIF(dto.QueryType is 1, d => d.CreatorId == _sessionContext.UserId)
+            .WhereIF(dto.Status.HasValue, d => d.Status == dto.Status)
+            .WhereIF(dto.StartTime.HasValue && dto.EndTime.HasValue, d => d.Order.StartTime >= dto.StartTime && d.Order.StartTime <= dto.EndTime)
+            .OrderByDescending(d => d.CreationTime);
+
+	}
 	#endregion
 }

+ 11 - 0
src/Hotline.Share/Dtos/Order/OrderTerminateDto.cs

@@ -156,6 +156,11 @@ namespace Hotline.Share.Dtos.Order
 		/// 查询类型  0 全部 1自己
 		/// </summary>
 		public int?  QueryType { get; set; }
+
+		/// <summary>
+		/// 审批状态  0 全部  1待审批 2 已审批
+		/// </summary>
+		public int? AuditStatus { get; set; }
 	}
 
 	public enum ETerminateStatus
@@ -183,5 +188,11 @@ namespace Hotline.Share.Dtos.Order
 		/// </summary>
 		[Description("终止退回")]
 		SendBack = 4,
+
+		/// <summary>
+		/// 退回待重提
+		/// </summary>
+		[Description("退回待重提")]
+		SendBackStart = 5,
 	}
 }