|
@@ -109,9 +109,9 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
private readonly IRepository<OrderTsDetails> _orderTsDetailsRepository;
|
|
|
private readonly IRepository<KnowledgeQuote> _knowledgeQuoteRepository;
|
|
|
private readonly IRepository<OrderSpecial> _orderSpecialRepository;
|
|
|
- private readonly IWorkflowApplication _workflowApplication;
|
|
|
+ private readonly IWorkflowApplication _workflowApplication;
|
|
|
|
|
|
- public OrderApplication(
|
|
|
+ public OrderApplication(
|
|
|
IOrderDomainService orderDomainService,
|
|
|
IOrderRepository orderRepository,
|
|
|
IWorkflowDomainService workflowDomainService,
|
|
@@ -155,7 +155,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
IRepository<OrderTsDetails> orderTsDetailsRepository,
|
|
|
IRepository<KnowledgeQuote> knowledgeQuoteRepository,
|
|
|
IRepository<OrderSpecial> orderSpecialRepository,
|
|
|
- IWorkflowApplication workflowApplication)
|
|
|
+ IWorkflowApplication workflowApplication)
|
|
|
{
|
|
|
_orderDomainService = orderDomainService;
|
|
|
_workflowDomainService = workflowDomainService;
|
|
@@ -202,7 +202,7 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
_orderSpecialRepository = orderSpecialRepository;
|
|
|
_workflowApplication = workflowApplication;
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 更新工单办理期满时间(延期调用,其他不调用)
|
|
@@ -5153,41 +5153,66 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
|
|
|
#region 退回重写
|
|
|
|
|
|
- public async Task OrderPrevious(OrderSendBackAudit sendBack,Order order, CancellationToken cancellationToken) {
|
|
|
-
|
|
|
- var (workflow, currentStep, prevDefine, prevStep, newStep, flowDirection) =
|
|
|
- await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- {
|
|
|
- var stepAssignInfo =
|
|
|
- await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- newStep.Assign(stepAssignInfo);
|
|
|
- if (sendBack.AssignStepId != prevStep1.Id) prevStep1.HandleMode = EHandleMode.PreviousNoDisplay;
|
|
|
- },
|
|
|
- cancellationToken);
|
|
|
-
|
|
|
- if (sendBack.IsAssign.Value)
|
|
|
+ public async Task OrderPrevious(OrderSendBackAudit sendBack, Order order, CancellationToken cancellationToken)
|
|
|
+ {
|
|
|
+
|
|
|
+ //var (workflow, currentStep, prevDefine, prevStep, newStep, flowDirection) =
|
|
|
+ // await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
+ // async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
+ // {
|
|
|
+ // var stepAssignInfo =
|
|
|
+ // await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
+ // if (stepAssignInfo is null) return;
|
|
|
+ // var validator = new StepAssignInfoValidator();
|
|
|
+ // await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
+ // newStep.Assign(stepAssignInfo);
|
|
|
+ // if (sendBack.AssignStepId != prevStep1.Id) prevStep1.HandleMode = EHandleMode.PreviousNoDisplay;
|
|
|
+ // },
|
|
|
+ // cancellationToken);
|
|
|
+
|
|
|
+ //if (sendBack.IsAssign.Value)
|
|
|
+ //{
|
|
|
+ // while (sendBack.AssignStepId != prevStep.Id)
|
|
|
+ // {
|
|
|
+ // (workflow, currentStep, prevDefine, prevStep, newStep, flowDirection) =
|
|
|
+ // await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
+ // async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
+ // {
|
|
|
+ // var stepAssignInfo =
|
|
|
+ // await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
+ // if (stepAssignInfo is null) return;
|
|
|
+ // var validator = new StepAssignInfoValidator();
|
|
|
+ // await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
+ // newStep.Assign(stepAssignInfo);
|
|
|
+ // if (sendBack.AssignStepId != prevStep.Id) prevStep1.HandleMode = EHandleMode.PreviousNoDisplay;
|
|
|
+ // },
|
|
|
+ // cancellationToken);
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
+ var handleMode = EHandleMode.Previous;
|
|
|
+ WorkflowStep? currentStep, prevStep, newStep, startStep = null;
|
|
|
+ EFlowDirection flowDirection;
|
|
|
+ do
|
|
|
{
|
|
|
- while (sendBack.AssignStepId != prevStep.Id)
|
|
|
- {
|
|
|
- (workflow, currentStep, prevDefine, prevStep, newStep, flowDirection) =
|
|
|
- await _workflowApplication.PreviousAsync(sendBack.SendBackData,
|
|
|
- async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
- {
|
|
|
- var stepAssignInfo =
|
|
|
- await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
- if (stepAssignInfo is null) return;
|
|
|
- var validator = new StepAssignInfoValidator();
|
|
|
- await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
- newStep.Assign(stepAssignInfo);
|
|
|
- if (sendBack.AssignStepId != prevStep.Id) prevStep1.HandleMode = EHandleMode.PreviousNoDisplay;
|
|
|
- },
|
|
|
- cancellationToken);
|
|
|
- }
|
|
|
- }
|
|
|
+ (_, currentStep, _, prevStep, newStep, flowDirection) =
|
|
|
+ await _workflowApplication.PreviousAsync(sendBack.SendBackData, handleMode,
|
|
|
+ async (workflow1, currentStep1, prevStepDefine, prevStep1, newStep) =>
|
|
|
+ {
|
|
|
+ var stepAssignInfo =
|
|
|
+ await GetOrderPreviousAssignInfoAsync(workflow1, prevStepDefine, prevStep1, cancellationToken);
|
|
|
+ if (stepAssignInfo is null) return;
|
|
|
+ var validator = new StepAssignInfoValidator();
|
|
|
+ await validator.ValidateAndThrowAsync(stepAssignInfo);
|
|
|
+ newStep.Assign(stepAssignInfo);
|
|
|
+
|
|
|
+ if (sendBack.AssignStepId != prevStep1.Id) handleMode = EHandleMode.PreviousNoDisplay;
|
|
|
+ },
|
|
|
+ cancellationToken);
|
|
|
+
|
|
|
+ startStep ??= currentStep;
|
|
|
+
|
|
|
+ } while (sendBack.AssignStepId != prevStep.Id && prevStep.StepType is not EStepType.Start && !prevStep.IsOrigin);
|
|
|
|
|
|
sendBack.ApplyOrgId = currentStep.AcceptorOrgId;
|
|
|
sendBack.ApplyOrgName = currentStep!.AcceptorOrgName;
|
|
@@ -5196,29 +5221,30 @@ public class OrderApplication : IOrderApplication, IScopeDependency
|
|
|
sendBack.SendBackStepName = prevStep.Name;
|
|
|
sendBack.WorkflowStepSendBackCrTime = currentStep.CreationTime;
|
|
|
sendBack.TraceId = currentStep.Id;
|
|
|
- //记录退回后最新的流程节点
|
|
|
- if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
- sendBack.NewCurrentStepId = newStep.Id;
|
|
|
+ //记录退回后最新的流程节点
|
|
|
+ if (newStep != null && !string.IsNullOrEmpty(newStep.Id))
|
|
|
+ sendBack.NewCurrentStepId = newStep.Id;
|
|
|
|
|
|
- var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
- ? EProcessType.Zhiban
|
|
|
- : EProcessType.Jiaoban;
|
|
|
- if (currentStep.AcceptorOrgId != OrgSeedData.CenterId && prevStep.BusinessType == EBusinessType.Send)
|
|
|
- order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
+ var processType = flowDirection == EFlowDirection.OrgToCenter || flowDirection == EFlowDirection.CenterToCenter
|
|
|
+ ? EProcessType.Zhiban
|
|
|
+ : EProcessType.Jiaoban;
|
|
|
+ if (currentStep.AcceptorOrgId != OrgSeedData.CenterId && prevStep.BusinessType == EBusinessType.Send)
|
|
|
+ order.SendBackNum = order.SendBackNum.HasValue ? order.SendBackNum.Value + 1 : 1;
|
|
|
|
|
|
- if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
+ if (prevStep.BusinessType == EBusinessType.Send)
|
|
|
{
|
|
|
await _orderRepository.Updateable().SetColumns(o => new Order()
|
|
|
{ CenterToOrgHandlerId = newStep.HandlerId, CenterToOrgHandlerName = newStep.HandlerName, ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
.Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
}
|
|
|
- else {
|
|
|
- await _orderRepository.Updateable().SetColumns(o => new Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
- .Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- await _orderSendBackAuditRepository.AddAsync(sendBack, cancellationToken);
|
|
|
- }
|
|
|
- #endregion
|
|
|
+ else
|
|
|
+ {
|
|
|
+ await _orderRepository.Updateable().SetColumns(o => new Order() { ProcessType = processType, SendBackNum = order.SendBackNum })
|
|
|
+ .Where(o => o.Id == order.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ await _orderSendBackAuditRepository.AddAsync(sendBack, cancellationToken);
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
}
|