Ver Fonte

Merge branch 'release' of http://110.188.24.182:10023/Fengwo/hotline into release

田爽 há 8 meses atrás
pai
commit
de9518196d

+ 102 - 101
src/Hotline.Api/Controllers/OrderController.cs

@@ -124,7 +124,7 @@ public class OrderController : BaseController
     private readonly Publisher _publisher;
     private readonly IOrderAnalysisApplication _orderAnalysisApplication;
 
-	public OrderController(
+    public OrderController(
         IOrderDomainService orderDomainService,
         IOrderRepository orderRepository,
         IWorkflowApplication workflowApplication,
@@ -182,7 +182,7 @@ public class OrderController : BaseController
         IOrderSendBackAuditApplication orderSendBackAuditApplication,
         Publisher publisher,
         IOrderAnalysisApplication orderAnalysisApplication
-		)
+        )
     {
         _orderDomainService = orderDomainService;
         _orderRepository = orderRepository;
@@ -242,7 +242,7 @@ public class OrderController : BaseController
         _publisher = publisher;
         _orderAnalysisApplication = orderAnalysisApplication;
 
-	}
+    }
     #endregion 
 
     #region 工单发布
@@ -329,7 +329,7 @@ public class OrderController : BaseController
                     orderVisit.VisitState = EVisitState.WaitForVisit;
                     orderVisit.PublishTime = DateTime.Now;
                     orderVisit.IsCanHandle = true;
-
+                    orderVisit.EmployeeId = _sessionContext.RequiredUserId;
                     if (order is { ProcessType: EProcessType.Zhiban, CounterSignType: null })
                     {
                         orderVisit.VisitState = EVisitState.Visited;
@@ -3627,7 +3627,7 @@ public class OrderController : BaseController
         handleStatuses = handleStatuses.WhereIF(dto.IsHandled.HasValue,
                 d => dto.IsHandled!.Value
                     ? d is not EOrderStatus.WaitForAccept and not EOrderStatus.BackToUnAccept and not EOrderStatus.SpecialToUnAccept and not EOrderStatus.HandOverToUnAccept
-                    : d is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept or  EOrderStatus.HandOverToUnAccept)
+                    : d is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept or EOrderStatus.HandOverToUnAccept)
             .ToArray();
         if (dto.EndTime.HasValue)
             dto.EndTime = dto.EndTime.Value.AddDays(1).AddSeconds(-1);
@@ -3836,7 +3836,7 @@ public class OrderController : BaseController
         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 and  not EOrderStatus.HandOverToUnAccept
+                    ? d is not EOrderStatus.WaitForAccept and not EOrderStatus.BackToUnAccept and not EOrderStatus.SpecialToUnAccept and not EOrderStatus.HandOverToUnAccept
                     : d is EOrderStatus.WaitForAccept or EOrderStatus.BackToUnAccept or EOrderStatus.SpecialToUnAccept or EOrderStatus.HandOverToUnAccept)
             .ToArray();
 
@@ -3911,7 +3911,7 @@ public class OrderController : BaseController
             WorkflowOrgId = _sessionContext.RequiredOrgId,
             WorkflowUserId = _sessionContext.RequiredUserId,
             WorkflowRoleIds = _sessionContext.Roles.ToList(),
-            Status =  order.Status,
+            Status = order.Status,
             TraceId = currentStep.Id
         };
         if (oneSendBack || twoSendBack)
@@ -4008,9 +4008,10 @@ public class OrderController : BaseController
                 .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
             //发送短信TODO
         }
-        else {
-			await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
-				.Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
+        else
+        {
+            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
+                .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
         }
         await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
     }
@@ -4057,10 +4058,10 @@ public class OrderController : BaseController
             }
             else
             {
-	            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
-		            .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
+                await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = sendBack.Status.Value })
+                    .Where(o => o.Id == sendBack.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
             }
-			await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
+            await _orderSendBackAuditRepository.UpdateAsync(sendBack, HttpContext.RequestAborted);
         }
     }
 
@@ -4409,7 +4410,7 @@ public class OrderController : BaseController
             await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto,
                 cancellationToken: HttpContext.RequestAborted);
             //}
-            await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
+            await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall, HttpContext.RequestAborted);
 
 
             if (order != null && ("001171".Equals(model.OrgId) ||
@@ -4535,7 +4536,7 @@ public class OrderController : BaseController
             var processType = dto.FlowDirection == EFlowDirection.OrgToCenter || dto.FlowDirection == EFlowDirection.CenterToCenter
                 ? EProcessType.Zhiban
                 : EProcessType.Jiaoban;
-            await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
+            await _workflowApplication.RecallAsync(recall, endTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Redo, HttpContext.RequestAborted);
             //var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == dto.OrderId);
             //if (publish != null)
             //{
@@ -4622,7 +4623,7 @@ public class OrderController : BaseController
 
             //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
 
-            await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
+            await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall, HttpContext.RequestAborted);
             //var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
             //if (publish != null)
             //{
@@ -4668,10 +4669,10 @@ public class OrderController : BaseController
         }
         else
         {
-	        await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = special.Status.Value })
-		        .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
+            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = special.Status.Value })
+                .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
         }
-	}
+    }
 
     /// <summary>
     /// 批量审批工单特提
@@ -4731,7 +4732,7 @@ public class OrderController : BaseController
 
                 //todo 特提重办,按审批通过时间依据中心派至部门的规则计算期满时间,更新order
 
-                await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, HttpContext.RequestAborted);
+                await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, order.Status >= EOrderStatus.Filed, EWorkflowTraceType.Recall, HttpContext.RequestAborted);
                 var publish = await _orderPublishRepository.GetAsync(x => x.OrderId == special.OrderId);
                 if (publish != null)
                 {
@@ -4777,10 +4778,10 @@ public class OrderController : BaseController
             }
             else
             {
-	            await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = special.Status.Value })
-		            .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
+                await _orderRepository.Updateable().SetColumns(o => new Orders.Order() { Status = special.Status.Value })
+                    .Where(o => o.Id == order.Id).ExecuteCommandAsync(HttpContext.RequestAborted);
             }
-		}
+        }
     }
 
     /// <summary>
@@ -6439,87 +6440,87 @@ public class OrderController : BaseController
             var status = EOrderStatus.HandOver;
             if (step.BusinessType == EBusinessType.Seat && step.StepType == EStepType.Start)
                 status = EOrderStatus.HandOverToUnAccept;
-			await _orderRepository.Updateable()
+            await _orderRepository.Updateable()
                 .SetColumns(o => new Orders.Order() { Status = status })
                 .Where(o => o.Id == dto.OrderId).ExecuteCommandAsync(HttpContext.RequestAborted);
         }
     }
 
-	#endregion
-
-	#region 分析报告
-	/// <summary>
-	/// 新增分析报告
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpPost("analysis")]
-	[LogFilter("新增分析报告")]
-	public async Task OrderAnalysisAdd([FromBody] AddOrderAnalysisDto dto)
-	{
-		await _orderAnalysisApplication.AddAsync(dto, HttpContext.RequestAborted);
-	}
-
-	/// <summary>
-	/// 修改分析报告
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpPut("analysis")]
-	[LogFilter("修改分析报告")]
-	public async Task OrderAnalysisUpdate([FromBody] UpdateOrderAnalysisDto dto)
-	{
-		await _orderAnalysisApplication.UpdateAsync(dto, HttpContext.RequestAborted);
-	}
-
-	/// <summary>
-	/// 删除分析报告
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpDelete("analysis")]
-	[LogFilter("删除分析报告")]
-	public async Task OrderAnalysisDelete([FromBody] DeleteOrderAnalysisDto dto)
-	{
-		await _orderAnalysisApplication.DeleteAsync(dto, HttpContext.RequestAborted);
-	}
-
-	/// <summary>
-	/// 分析报告列表
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpGet("analysis_list")]
-	[LogFilter("分析报告列表")]
-	public async Task<PagedDto<OrderAnalysisDto>> OrderAnalysisListQuery([FromQuery] OrderAnalysisListDto dto)
-	{
-		var (total, items) = await _orderAnalysisApplication.ListQuery(dto, HttpContext.RequestAborted).ToPagedListAsync(dto, HttpContext.RequestAborted);
-		return new PagedDto<OrderAnalysisDto>(total, items);
-	}
-
-	/// <summary>
-	/// 分析报告明细
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpGet("analysis_detail")]
-	[LogFilter("分析报告明细")]
-	public async Task<PagedDto<OrderDto>> OrderAnalysisDetailQuery([FromQuery] OrderAnalysisDetailDto dto)
-	{
-		var(total, items) = await _orderAnalysisApplication.DetailQuery(dto, HttpContext.RequestAborted).ToPagedListAsync(dto, HttpContext.RequestAborted);
-		return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
-	}
-
-	/// <summary>
-	/// 生成分析报告
-	/// </summary>
-	/// <param name="dtos"></param>
-	/// <returns></returns>
-	[HttpGet("analysis_report")]
-	[LogFilter("生成分析报告")]
-	public async Task<object> OrderAnalysisReportQuery([FromQuery] OrderAnalysisDetailDto dto)
-	{
-		 return await _orderAnalysisApplication.ReportQuery(dto, HttpContext.RequestAborted);
-	}
-	#endregion
+    #endregion
+
+    #region 分析报告
+    /// <summary>
+    /// 新增分析报告
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpPost("analysis")]
+    [LogFilter("新增分析报告")]
+    public async Task OrderAnalysisAdd([FromBody] AddOrderAnalysisDto dto)
+    {
+        await _orderAnalysisApplication.AddAsync(dto, HttpContext.RequestAborted);
+    }
+
+    /// <summary>
+    /// 修改分析报告
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpPut("analysis")]
+    [LogFilter("修改分析报告")]
+    public async Task OrderAnalysisUpdate([FromBody] UpdateOrderAnalysisDto dto)
+    {
+        await _orderAnalysisApplication.UpdateAsync(dto, HttpContext.RequestAborted);
+    }
+
+    /// <summary>
+    /// 删除分析报告
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpDelete("analysis")]
+    [LogFilter("删除分析报告")]
+    public async Task OrderAnalysisDelete([FromBody] DeleteOrderAnalysisDto dto)
+    {
+        await _orderAnalysisApplication.DeleteAsync(dto, HttpContext.RequestAborted);
+    }
+
+    /// <summary>
+    /// 分析报告列表
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpGet("analysis_list")]
+    [LogFilter("分析报告列表")]
+    public async Task<PagedDto<OrderAnalysisDto>> OrderAnalysisListQuery([FromQuery] OrderAnalysisListDto dto)
+    {
+        var (total, items) = await _orderAnalysisApplication.ListQuery(dto, HttpContext.RequestAborted).ToPagedListAsync(dto, HttpContext.RequestAborted);
+        return new PagedDto<OrderAnalysisDto>(total, items);
+    }
+
+    /// <summary>
+    /// 分析报告明细
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpGet("analysis_detail")]
+    [LogFilter("分析报告明细")]
+    public async Task<PagedDto<OrderDto>> OrderAnalysisDetailQuery([FromQuery] OrderAnalysisDetailDto dto)
+    {
+        var (total, items) = await _orderAnalysisApplication.DetailQuery(dto, HttpContext.RequestAborted).ToPagedListAsync(dto, HttpContext.RequestAborted);
+        return new PagedDto<OrderDto>(total, _mapper.Map<IReadOnlyList<OrderDto>>(items));
+    }
+
+    /// <summary>
+    /// 生成分析报告
+    /// </summary>
+    /// <param name="dtos"></param>
+    /// <returns></returns>
+    [HttpGet("analysis_report")]
+    [LogFilter("生成分析报告")]
+    public async Task<object> OrderAnalysisReportQuery([FromQuery] OrderAnalysisDetailDto dto)
+    {
+        return await _orderAnalysisApplication.ReportQuery(dto, HttpContext.RequestAborted);
+    }
+    #endregion
 }

+ 5 - 5
src/Hotline.Application/FlowEngine/IWorkflowApplication.cs

@@ -28,10 +28,10 @@ namespace Hotline.Application.FlowEngine
 		Task<FlowAssignInfo> GetNextStepFlowAssignInfoAsync(Workflow workflow, WorkflowStep currentStep,
             BasicWorkflowDto dto, StepDefine nextStepDefine, bool isNextDynamic, CancellationToken cancellationToken);
 
-		/// <summary>
-		/// 流转至下一节点(节点办理)
-		/// </summary>
-		Task<Workflow> NextAsync(NextWorkflowDto dto, ISessionContext current, DateTime? expiredTime = null,
+        /// <summary>
+        /// 流转至下一节点(节点办理)
+        /// </summary>
+        Task<Workflow> NextAsync(NextWorkflowDto dto, ISessionContext current, DateTime? expiredTime = null,
             CancellationToken cancellationToken = default);
 
         /// <summary>
@@ -48,7 +48,7 @@ namespace Hotline.Application.FlowEngine
         /// <summary>
         /// 撤回至任意节点
         /// </summary>
-        Task RecallAsync(RecallDto dto, DateTime? expiredTime, bool isOrderFiled, CancellationToken cancellationToken);
+        Task RecallAsync(RecallDto dto, DateTime? expiredTime, bool isOrderFiled, EWorkflowTraceType traceType, CancellationToken cancellationToken);
 
         /// <summary>
         /// 办理至结束节点(无视流程模板配置,操作人需是当前节点办理对象)

+ 4 - 4
src/Hotline.Application/FlowEngine/WorkflowApplication.cs

@@ -167,7 +167,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         var flowAssignInfo =
             await GetNextStepFlowAssignInfoAsync(workflow, startStep, dto, firstStepDefine, isNextDynamic, cancellationToken);
-        
+
         var counterSignType = _workflowDomainService.GetCounterSignType(dto.IsStartCountersign);
 
         //办理开始节点
@@ -309,7 +309,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
     /// <summary>
     /// 撤回至任意节点
     /// </summary>
-    public async Task RecallAsync(RecallDto dto, DateTime? expiredTime, bool isOrderFiled, CancellationToken cancellationToken)
+    public async Task RecallAsync(RecallDto dto, DateTime? expiredTime, bool isOrderFiled, EWorkflowTraceType traceType, CancellationToken cancellationToken)
     {
         var validator = new RecallDtoValidator();
         var validationResult = await validator.ValidateAsync(dto, cancellationToken);
@@ -330,7 +330,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         //var stepHandlers = await GetNextStepHandlersAsync(workflow, targetStepDefine, dto, cancellationToken);
 
-        await _workflowDomainService.RecallAsync(workflow, dto, targetStepDefine, flowAssignInfo, expiredTime, isOrderFiled, cancellationToken);
+        await _workflowDomainService.RecallAsync(workflow, dto, targetStepDefine, flowAssignInfo, traceType, expiredTime, isOrderFiled, cancellationToken);
     }
 
     /// <summary>
@@ -411,7 +411,7 @@ public class WorkflowApplication : IWorkflowApplication, IScopeDependency
 
         if (workflow.Steps.All(d => d.StepType != EStepType.End))
         {
-            var currentStep = unhandleSteps.FirstOrDefault() 
+            var currentStep = unhandleSteps.FirstOrDefault()
                               ?? workflow.Steps.OrderBy(d => d.CreationTime).Last();
 
             await _workflowDomainService.EndAsync(workflow, dto,

+ 18 - 18
src/Hotline.Application/Orders/OrderSecondaryHandlingApplication.cs

@@ -43,7 +43,7 @@ namespace Hotline.Application.Orders
         private readonly IRepository<OrderVisitDetail> _orderVisitedDetailRepository;
         private readonly IOrderDomainService _orderDomainService;
 
-		public OrderSecondaryHandlingApplication(
+        public OrderSecondaryHandlingApplication(
             IMapper mapper,
             IRepository<OrderSecondaryHandling> orderSecondaryHandlingRepository,
             IFileRepository fileRepository,
@@ -58,7 +58,7 @@ namespace Hotline.Application.Orders
             IWorkflowDomainService workflowDomainService,
             IRepository<OrderVisitDetail> orderVisitedDetailRepository,
             IOrderDomainService orderDomainService
-			)
+            )
         {
             _mapper = mapper;
             _orderSecondaryHandlingRepository = orderSecondaryHandlingRepository;
@@ -75,7 +75,7 @@ namespace Hotline.Application.Orders
             _orderVisitedDetailRepository = orderVisitedDetailRepository;
             _orderDomainService = orderDomainService;
 
-		}
+        }
 
         /// <summary>
         ///  二次办理新增
@@ -170,7 +170,7 @@ namespace Hotline.Application.Orders
                 var expiredTime = _timeLimitDomainService.CalcEndTime(DateTime.Now, order.AcceptTypeCode);
                 var processType = step.FlowDirection == EFlowDirection.OrgToCenter || step.FlowDirection == EFlowDirection.CenterToCenter ? EProcessType.Zhiban : EProcessType.Jiaoban;
                 var isOrderFiled = order.Status >= EOrderStatus.Filed;
-				await _orderRepository.Updateable().SetColumns(o => new Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime,NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ReTransactNum = reTransactNum, ProcessType = processType,Status = EOrderStatus.Handling })
+                await _orderRepository.Updateable().SetColumns(o => new Order() { ExpiredTime = expiredTime.ExpiredTime, NearlyExpiredTime = expiredTime.NearlyExpiredTime, NearlyExpiredTimeOne = expiredTime.NearlyExpiredTimeOne, ReTransactNum = reTransactNum, ProcessType = processType, Status = EOrderStatus.Handling })
                     .Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
                 var orderDto = _mapper.Map<OrderDto>(order);
                 await _capPublisher.PublishAsync(Hotline.Share.Mq.EventNames.HotlineOrderExpiredTimeUpdate, orderDto, cancellationToken: cancellationToken);
@@ -189,8 +189,8 @@ namespace Hotline.Application.Orders
                     await _orderPublishHistoryRepository.AddAsync(publishHistory, cancellationToken);
                     await _orderPublishRepository.RemoveAsync(publish, false, cancellationToken);
                 }
-                await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, isOrderFiled, cancellationToken);
-			}
+                await _workflowApplication.RecallAsync(recall, expiredTime.ExpiredTime, isOrderFiled, EWorkflowTraceType.SecondHandle, cancellationToken);
+            }
             else
             {
                 var visit = await _orderVisitRepository.GetAsync(x => x.OrderId == model.OrderId, cancellationToken);
@@ -207,11 +207,11 @@ namespace Hotline.Application.Orders
         /// <returns></returns>
         public ISugarQueryable<OrderVisitDetail> ApplyQuery(MayScreenListDto dto, CancellationToken cancellationToken)
         {
-			//dto.CreationTimeEnd = DateTime.Now;
-			////dto.CreationTimeStart = DateTime.Now;
-			//dto.CreationTimeStart = _timeLimitDomainService.CalcWorkTimeReduce(DateTime.Now, 5);
-			var isAdmin = _orderDomainService.IsCheckAdmin();
-			var query = _orderVisitedDetailRepository.Queryable(false, true)
+            //dto.CreationTimeEnd = DateTime.Now;
+            ////dto.CreationTimeStart = DateTime.Now;
+            //dto.CreationTimeStart = _timeLimitDomainService.CalcWorkTimeReduce(DateTime.Now, 5);
+            var isAdmin = _orderDomainService.IsCheckAdmin();
+            var query = _orderVisitedDetailRepository.Queryable(false, true)
                 .Includes(x => x.OrderVisit)
                 .Includes(x => x.OrderVisit, y => y.Order)
                 .Includes(x => x.OrderVisit, y => y.Employee)
@@ -275,16 +275,16 @@ namespace Hotline.Application.Orders
         {
             if (dto.CreationTimeEnd.HasValue)
                 dto.CreationTimeEnd = dto.CreationTimeEnd.Value.AddDays(1).AddSeconds(-1);
-            var quer =  _orderSecondaryHandlingRepository.Queryable()
+            var quer = _orderSecondaryHandlingRepository.Queryable()
                 .Includes(x => x.Order)
                 .Includes(x => x.VisitDetail)
                 .Includes(x => x.Visit, d => d.Order)
                 .Where(x => x.State > ESecondaryHandlingState.NotApply)
-                .WhereIF(!string.IsNullOrEmpty(dto.Title),x => x.Visit.Order.Title.Contains(dto.Title!))
-                .WhereIF(!string.IsNullOrEmpty(dto.No), x =>  x.Visit.Order.No.Contains(dto.No!))
-				.WhereIF(dto.Status is ESecondaryHandlingState.Apply, x => x.State == ESecondaryHandlingState.Apply)
+                .WhereIF(!string.IsNullOrEmpty(dto.Title), x => x.Visit.Order.Title.Contains(dto.Title!))
+                .WhereIF(!string.IsNullOrEmpty(dto.No), x => x.Visit.Order.No.Contains(dto.No!))
+                .WhereIF(dto.Status is ESecondaryHandlingState.Apply, x => x.State == ESecondaryHandlingState.Apply)
                 .WhereIF(dto.Status is ESecondaryHandlingState.Handled, x => x.State != ESecondaryHandlingState.Apply)
-                .WhereIF(dto.Status is ESecondaryHandlingState.End || dto.Status is ESecondaryHandlingState.Refuse  || dto.Status is ESecondaryHandlingState.NotApply, x => x.State == dto.Status)
+                .WhereIF(dto.Status is ESecondaryHandlingState.End || dto.Status is ESecondaryHandlingState.Refuse || dto.Status is ESecondaryHandlingState.NotApply, x => x.State == dto.Status)
                 .WhereIF(dto.CreationTimeStart.HasValue, x => x.CreationTime >= dto.CreationTimeStart)
                 .WhereIF(dto.CreationTimeEnd.HasValue, x => x.CreationTime <= dto.CreationTimeEnd)
                 .WhereIF(!string.IsNullOrEmpty(dto.OrderId), x => x.OrderId == dto.OrderId);
@@ -292,8 +292,8 @@ namespace Hotline.Application.Orders
             {
                 quer.Where(x => x.ApplyOrgId.StartsWith(_sessionContext.OrgId));
             }
-			return quer.OrderByDescending(x => x.CreationTime);
-		}
+            return quer.OrderByDescending(x => x.CreationTime);
+        }
 
         /// <summary>
         /// 获取实体

+ 7 - 1
src/Hotline.Share/Enums/FlowEngine/EWorkflowTraceType.cs

@@ -22,7 +22,7 @@ namespace Hotline.Share.Enums.FlowEngine
         Normal = 1,
 
         /// <summary>
-        /// 撤回
+        /// 特提
         /// </summary>
         [Description("特提")]
         Recall = 2,
@@ -50,5 +50,11 @@ namespace Hotline.Share.Enums.FlowEngine
         /// </summary>
         [Description("重办")]
         Redo = 6,
+
+        /// <summary>
+        /// 二次办理
+        /// </summary>
+        [Description("二次办理")]
+        SecondHandle = 7,
     }
 }

+ 1 - 1
src/Hotline/FlowEngine/Workflows/IWorkflowDomainService.cs

@@ -67,7 +67,7 @@ namespace Hotline.FlowEngine.Workflows
         /// 撤回(返回到之前任意节点)
         /// </summary>
         Task RecallAsync(Workflow workflow, RecallDto dto, StepDefine targetStepDefine, FlowAssignInfo flowAssignInfo,
-            DateTime? expiredTime, bool isOrderFiled, CancellationToken cancellationToken);
+            EWorkflowTraceType traceType, DateTime? expiredTime, bool isOrderFiled, CancellationToken cancellationToken);
 
         /// <summary>
         /// 撤回至开始节点

+ 2 - 2
src/Hotline/FlowEngine/Workflows/WorkflowDomainService.cs

@@ -1047,7 +1047,7 @@ namespace Hotline.FlowEngine.Workflows
         /// 撤回(返回到之前任意节点)
         /// </summary>
         public async Task RecallAsync(Workflow workflow, RecallDto dto, StepDefine targetStepDefine,
-            FlowAssignInfo flowAssignInfo, DateTime? expiredTime, bool isOrderFiled,
+            FlowAssignInfo flowAssignInfo, EWorkflowTraceType traceType, DateTime? expiredTime, bool isOrderFiled,
             CancellationToken cancellationToken)
         {
             var targetStep = workflow.Steps.FirstOrDefault(d => d.Code == dto.NextStepCode && d.IsOrigin);
@@ -1058,7 +1058,7 @@ namespace Hotline.FlowEngine.Workflows
             //await RecallTraceAsync(workflow.Traces, dto.Opinion, _sessionContext, cancellationToken);
 
             var isOrgToCenter = await RecallAsync(workflow, dto, flowAssignInfo, targetStepDefine, targetStep,
-                EWorkflowTraceType.Recall, expiredTime, isOrderFiled, cancellationToken);
+                traceType, expiredTime, isOrderFiled, cancellationToken);
 
             await _workflowRepository.UpdateAsync(workflow, cancellationToken);