|
@@ -178,7 +178,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
{
|
|
|
if (!workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode)) return;
|
|
|
//工单完成以后查看的场景
|
|
|
- if (workflow.Status is not EWorkflowStatus.Runnable) return;
|
|
|
+ if (workflow.Status is not EWorkflowStatus.Runnable or EWorkflowStatus.Marked) return;
|
|
|
|
|
|
var (currentStepBox, currentStep) = GetUnCompleteStepOrDefault(workflow.StepBoxes, orgCode, userId);
|
|
|
if (currentStep is null) return;
|
|
@@ -346,17 +346,23 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
workflow.AssignTime = DateTime.Now;
|
|
|
}
|
|
|
|
|
|
- //最终办理意见与时间处理
|
|
|
- if (currentStep.StepType is EStepType.Normal && nextStepBoxDefine.StepType is EStepType.CountersignEnd)
|
|
|
+ //最终办理意见与时间处理(解决工单业务需求,如果流程配置普通节点后未配置汇总节点则不会运行到此处)
|
|
|
+ var normalSteps = workflow.StepBoxes
|
|
|
+ .Where(d => d.StepType is EStepType.Normal)
|
|
|
+ .SelectMany(d => d.Steps);
|
|
|
+ var isAllCompleted = normalSteps.All(d => d.Status is EWorkflowStepStatus.Completed);
|
|
|
+ if (isAllCompleted)
|
|
|
{
|
|
|
//最终办理
|
|
|
workflow.Opinion = dto.Opinion;
|
|
|
+ workflow.Status = EWorkflowStatus.Marked;
|
|
|
await _mediator.Publish(new OrderFinalManageNotify(workflow), cancellationToken);
|
|
|
}
|
|
|
- else if (currentStep.StepType is EStepType.CountersignEnd && nextStepBoxDefine.StepType is EStepType.Normal)
|
|
|
+ else if (workflow.Status is EWorkflowStatus.Marked)
|
|
|
{
|
|
|
//汇总以后又重新指派到非汇总节点办理
|
|
|
workflow.ResetOption();
|
|
|
+ workflow.Status = EWorkflowStatus.Runnable;
|
|
|
await _mediator.Publish(new OrderRecallFinalManageNotify(workflow), cancellationToken);
|
|
|
}
|
|
|
|
|
@@ -820,7 +826,7 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
|
|
|
private static void CheckWhetherRunnable(EWorkflowStatus status)
|
|
|
{
|
|
|
- if (status is not EWorkflowStatus.Runnable)
|
|
|
+ if (status is not EWorkflowStatus.Runnable or EWorkflowStatus.Marked)
|
|
|
throw new UserFriendlyException("当前流程状态不可继续流转");
|
|
|
}
|
|
|
|