Преглед изворни кода

二次办理 未处理工单信息数据

田爽 пре 2 месеци
родитељ
комит
0749aefd8f
1 измењених фајлова са 25 додато и 5 уклоњено
  1. 25 5
      src/Hotline.Application/Orders/OrderSecondaryHandlingApplication.cs

+ 25 - 5
src/Hotline.Application/Orders/OrderSecondaryHandlingApplication.cs

@@ -29,6 +29,8 @@ using Hotline.Settings.TimeLimitDomain;
 using Microsoft.Extensions.Options;
 using DocumentFormat.OpenXml.Office2010.Excel;
 using Hotline.Share.Dtos.FlowEngine.Workflow;
+using Hotline.Validators.FlowEngine;
+using FluentValidation;
 
 namespace Hotline.Application.Orders
 {
@@ -51,6 +53,7 @@ namespace Hotline.Application.Orders
         private readonly IOrderDomainService _orderDomainService;
         private readonly IOrderScreenRepository _orderScreenRepository;
         private readonly IOptionsSnapshot<AppConfiguration> _appOptions;
+		private readonly IOrderApplication _orderApplication;
 
 		public OrderSecondaryHandlingApplication(
             IMapper mapper,
@@ -69,7 +72,8 @@ namespace Hotline.Application.Orders
             IOrderDomainService orderDomainService,
             IOrderScreenRepository orderScreenRepository,
             IOptionsSnapshot<AppConfiguration> appOptions,
-			ICalcExpireTime expireTime)
+			ICalcExpireTime expireTime,
+			IOrderApplication orderApplication)
         {
             _mapper = mapper;
             _orderSecondaryHandlingRepository = orderSecondaryHandlingRepository;
@@ -88,6 +92,7 @@ namespace Hotline.Application.Orders
             _expireTime = expireTime;
             _orderScreenRepository = orderScreenRepository;
             _appOptions = appOptions;
+			_orderApplication = orderApplication;
 		}
 
         /// <summary>
@@ -220,11 +225,26 @@ namespace Hotline.Application.Orders
 					}
                 }
 
-                // var reverseFlowStepAssignInfo = new ReverseFlowStepAssignInfo(EReverseFlowStepCreationPolicy.OriginStep);
-                await _workflowDomainService.RecallAsync(recall, recall.NextHandlers.FirstOrDefault(), EWorkflowTraceType.SecondHandle, 
-                    expiredTime.ExpiredTime, isOrderFiled,  EHandleMode.SecondaryHandle, cancellationToken: cancellationToken);
+				var (workflow, targetStepDefine, currentStep, targetStep, newStep, isOrgToCenter) = await _workflowDomainService.RecallAsync(recall,
+						recall.NextHandlers.FirstOrDefault(), EWorkflowTraceType.SecondHandle,
+						order.ExpiredTime, order.Status >= EOrderStatus.Filed, EHandleMode.SecondaryHandle,
+						async (workflow, currentStep, targetStepDefine, targetStep, targetStepNew) =>
+						{
+							var basicWorkflowDto = _mapper.Map<BasicWorkflowDto>(dto);
+							var stepAssignInfo = await _orderApplication.GetOrderRecallAssignInfoAsync(workflow, targetStepDefine, targetStep,
+								basicWorkflowDto, cancellationToken);
+							if (stepAssignInfo is null) return;
+							var validator = new StepAssignInfoValidator();
+							await validator.ValidateAndThrowAsync(stepAssignInfo, cancellationToken);
 
-                visit.VisitState = EVisitState.None;
+							targetStepNew.Assign(stepAssignInfo);
+						},
+						cancellationToken);
+				//_mapper.Map(workflow, order);
+				//order.FileEmpty();
+				//await _orderRepository.UpdateAsync(order, false, cancellationToken);
+
+				visit.VisitState = EVisitState.None;
                 await _orderVisitRepository.UpdateAsync(visit, cancellationToken);
 			}
             else