|
@@ -2277,12 +2277,15 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
string? opinion = null;
|
|
|
if (isAutoFillSummaryOpinion)
|
|
|
{
|
|
|
+ //依据某节点作为根节点,查找最底层办理节点无论普通还是汇总节点
|
|
|
+ var preSteps = GetLastStepsFromRootStep(workflow.Steps, countersignStartStep);
|
|
|
+
|
|
|
var sb = new StringBuilder();
|
|
|
- foreach (var innerStep in csInnerSteps.OrderBy(d => d.HandleTime).ToList())
|
|
|
+ foreach (var prevStep in preSteps.OrderBy(d => d.HandleTime).ToList())
|
|
|
{
|
|
|
- sb.AppendLine($"【会签时间】:{innerStep.HandleTime?.ToString("yyyy-MM-dd HH:mm:ss")}");
|
|
|
- sb.AppendLine($"【会签人】:{innerStep.HandlerName}");
|
|
|
- sb.AppendLine($"【会签结果】:{innerStep.Opinion}");
|
|
|
+ sb.AppendLine($"【会签时间】:{prevStep.HandleTime?.ToString("yyyy-MM-dd HH:mm:ss")}");
|
|
|
+ sb.AppendLine($"【会签人】:{prevStep.HandlerName}");
|
|
|
+ sb.AppendLine($"【会签结果】:{prevStep.Opinion}");
|
|
|
sb.AppendLine("");
|
|
|
}
|
|
|
|
|
@@ -2304,6 +2307,38 @@ namespace Hotline.FlowEngine.Workflows
|
|
|
return nextSteps;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 以某一节点作为根节点开始查找最底层办理节点(需求:自动填充汇总节点意见)
|
|
|
+ /// </summary>
|
|
|
+ private List<WorkflowStep> GetLastStepsFromRootStep(List<WorkflowStep> steps, WorkflowStep rootStep)
|
|
|
+ {
|
|
|
+ var lastSteps = new List<WorkflowStep>();
|
|
|
+ var nextSteps = steps.Where(d => d.PrevStepId == rootStep.Id).ToList();
|
|
|
+ foreach (var nextStep in nextSteps)
|
|
|
+ {
|
|
|
+ if (nextStep.IsStartCountersign)
|
|
|
+ {
|
|
|
+ //find last csend
|
|
|
+ var lastCsEndStep = GetLastCountersignEndStep(steps, nextStep);
|
|
|
+ if (lastCsEndStep != null)
|
|
|
+ lastSteps.Add(lastCsEndStep);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ lastSteps.Add(nextStep);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return lastSteps;
|
|
|
+ }
|
|
|
+
|
|
|
+ private WorkflowStep? GetLastCountersignEndStep(List<WorkflowStep> steps, WorkflowStep nextStep)
|
|
|
+ {
|
|
|
+ var csEndStep = steps.FirstOrDefault(d => d.CountersignStartStepId == nextStep.Id);
|
|
|
+ if (csEndStep == null) return null;
|
|
|
+ return !csEndStep.IsStartCountersign ? csEndStep : GetLastCountersignEndStep(steps, csEndStep);
|
|
|
+ }
|
|
|
+
|
|
|
private async Task<WorkflowStep> CreateCountersignEndStepAsync(
|
|
|
Workflow workflow, WorkflowStep countersignStartStep,
|
|
|
BasicWorkflowDto dto, DateTime? expiredTime, string? opinion = null,
|