|
@@ -2323,16 +2323,17 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
private async Task<List<WorkflowStep>> CreateCsEndStepsByTargetPrevAsync(Workflow workflow, WorkflowStep step,
|
|
|
BasicWorkflowDto dto, DateTime? expiredTime, bool isAutoFillSummaryOpinion = false, CancellationToken cancellationToken = default)
|
|
|
{
|
|
|
- var countersignStartStep = workflow.Steps.FirstOrDefault(d => d.Id == step.PrevStepId);
|
|
|
- //var countersignStartStep = workflow.Steps.FirstOrDefault(d => d.StartCountersignId == step.CountersignId);
|
|
|
+ //var countersignStartStep = workflow.Steps.FirstOrDefault(d => d.Id == step.PrevStepId);
|
|
|
+ var countersignStartStep = workflow.Steps.FirstOrDefault(d => d.StartCountersignId == step.CountersignId);
|
|
|
if (countersignStartStep is null)
|
|
|
throw new UserFriendlyException("未查询到当前节点上级会签开启节点");
|
|
|
var nextSteps = new List<WorkflowStep>();
|
|
|
//会签未全部办理则不创建汇总节点
|
|
|
|
|
|
- var csInnerSteps = workflow.Steps.Where(d => d.PrevStepId == countersignStartStep.Id).ToList();
|
|
|
- if (csInnerSteps.Any(d =>
|
|
|
- d.Status != EWorkflowStepStatus.Handled || (d.IsStartCountersign && !d.IsStartedCountersignEnd)))
|
|
|
+ //var csInnerSteps = workflow.Steps.Where(d => d.PrevStepId == countersignStartStep.Id).ToList();
|
|
|
+ //if (csInnerSteps.Any(d =>
|
|
|
+ // d.Status != EWorkflowStepStatus.Handled || (d.IsStartCountersign && !d.IsStartedCountersignEnd)))
|
|
|
+ if(!HasStepsAllHandledIncludeCountersign(workflow.Steps, countersignStartStep))
|
|
|
return nextSteps;
|
|
|
|
|
|
string? opinion = null;
|
|
@@ -2368,6 +2369,21 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
return nextSteps;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 是否会签节点都已经办理完成(包含会签嵌套的判断)
|
|
|
+ /// </summary>
|
|
|
+ private bool HasStepsAllHandledIncludeCountersign(List<WorkflowStep> steps, WorkflowStep countersignStartStep)
|
|
|
+ {
|
|
|
+ var innerSteps = steps.Where(d => d.CountersignId == countersignStartStep.StartCountersignId).ToList();
|
|
|
+ foreach (var step in innerSteps)
|
|
|
+ {
|
|
|
+ if (step.Status != EWorkflowStepStatus.Handled) return false;
|
|
|
+ if (step.IsStartCountersign)
|
|
|
+ return HasStepsAllHandledIncludeCountersign(steps, step);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/// <summary>
|
|
|
/// 以某一节点作为根节点开始查找最底层办理节点(需求:自动填充汇总节点意见)
|