private List <TemplateStepFixstepList> LoadNextStepOptions(InstanceStepDTO AInstanceStep) { List <TemplateStepFixstepList> vList = AInstanceStep.TemplateStep.TemplateStepFixstepLists.ConvertAll <TemplateStepFixstepList>(AItem => AItem.Clone() as TemplateStepFixstepList); //根据退回设置,加入发起步骤,作为退回的可选项 if (AInstanceStep.TemplateStep.IsFormReturnFirst) { TemplateStep vStepModel = AInstanceStep.GerFirstTemplateStep(); if (vStepModel != null) { AddReturnOptions(vList, vStepModel, vStepModel.StepName + "(退回)"); } } //根据退回设置,加入上一个有人员处理的完成步骤,作为退回的可选项 if (AInstanceStep.TemplateStep.IsFormReturn) { TemplateStep vStepModel = AInstanceStep.GetPreviousHasUserDealTemplateStep(); if (vStepModel != null) { AddReturnOptions(vList, vStepModel, vStepModel.StepName + "(退回)"); } } //根据退回设置,加入有人员处理的所有完成步骤,作为退回的可选项 if (AInstanceStep.TemplateStep.IsFormReturnFinish) { //取得所有通过的步骤实例,且要有人处理 List <InstanceStep> vEntityList = (from InstanceStep vEntity in AInstanceStep.InstanceFlow.InstanceSteps where vEntity.Status.Equals(6) && vEntity.InstanceStepUsers.Exists(AItem => (AItem as InstanceStepUser).Status.Equals(1)) select vEntity).ToList(); if (vEntityList.Any()) { //取得步骤实例对应的步骤模板 var vItems = from TemplateStep vModel in AInstanceStep.TemplateFlow.TemplateSteps where vEntityList.Exists(AItem => AItem.StepId.Equals(vModel.Fid)) select vModel; foreach (TemplateStep vStepModel in vItems) { AddReturnOptions(vList, vStepModel, vStepModel.StepName + "(退回)"); } } } return(vList); }