コード例 #1
0
        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);
        }