|
@@ -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
|