Ejemplo n.º 1
0
        /// <summary>
        /// 设置表单默认属性
        /// </summary>
        /// <param name="auditForm"></param>
        /// <param name="wbs"></param>
        /// <param name="projectInfo"></param>
        public virtual void SetAuditFormInfo(T_AE_Audit auditForm, S_W_WBS wbs, S_I_ProjectInfo projectInfo)
        {
            if (String.IsNullOrEmpty(auditForm.ID))
            {
                auditForm.ID = FormulaHelper.CreateGuid();
            }

            if (string.IsNullOrEmpty(auditForm.WBSID))
            {
                auditForm.WBSID = wbs.ID;
            }
            if (string.IsNullOrEmpty(auditForm.ProjectInfoID))
            {
                auditForm.ProjectInfoID = wbs.ProjectInfoID;
            }
            if (string.IsNullOrEmpty(auditForm.State))
            {
                auditForm.State = ProjectFlowState.InFlow.ToString();
            }

            auditForm.CreateDate      = DateTime.Now;
            auditForm.ProjectInfoCode = projectInfo.Code;
            auditForm.ProjectInfoName = projectInfo.Name;

            if (wbs.WBSType == WBSNodeType.Work.ToString())
            {
                auditForm.TaskWorkCode = wbs.Code;
                auditForm.TaskWorkName = wbs.Name;
            }

            var subProject = wbs.Seniorities.FirstOrDefault(d => d.WBSType == WBSNodeType.SubProject.ToString());

            if (subProject != null)
            {
                auditForm.SubProjectCode = subProject.Code;
                auditForm.SubProjectName = subProject.Name;
            }
            var major = wbs.Seniorities.FirstOrDefault(d => d.WBSType == WBSNodeType.Major.ToString());

            if (major != null)
            {
                auditForm.MajorCode = major.WBSValue;
                auditForm.MajorName = major.Name;
            }

            auditForm.PhaseCode = projectInfo.PhaseValue;
            var ph = BaseConfigFO.GetWBSEnum(WBSNodeType.Phase).AsEnumerable().FirstOrDefault(c => c["value"].ToString() == projectInfo.PhaseValue);

            if (ph != null)
            {
                auditForm.PhaseName = ph["text"].ToString();
            }
        }
Ejemplo n.º 2
0
        public virtual List <S_W_Activity> StartAuditFlow(T_AE_Audit auditForm, string auditFormUrl, List <S_E_Product> products, string wbsID)
        {
            var wbs = instanceEnitites.S_W_WBS.SingleOrDefault(d => d.ID == wbsID);

            if (wbs == null)
            {
                throw new Exception("未能找到ID为【" + wbsID + "】的WBS对象,无法执行校审");
            }

            var project = instanceEnitites.S_I_ProjectInfo.SingleOrDefault(d => d.ID == wbs.ProjectInfoID);

            if (project == null)
            {
                throw new Exception("未能找到ID为【" + wbs.ProjectInfoID + "】的项目,无法执行校审");
            }

            //为校审单设置默认值
            SetAuditFormInfo(auditForm, wbs, project);

            //生成流程步骤及启动参数
            var startParam = GetAuditFlowStartParam(auditForm, auditFormUrl, products, wbs, project);

            var service = AuditFlowServiceGenretor.CreateService();
            List <S_W_Activity> list = service.StartAuditFlow(startParam);

            //设置校审单状态
            auditForm.State = list[0].ActivityKey;
            var taskWork = wbs.S_W_TaskWork.FirstOrDefault();

            //设置校审人员到表单
            this.SetAuditUsers(auditForm, startParam.DefSteps, taskWork.DesignerUserID, taskWork.DesignerUserName);
            //设置成果属性
            this.SetProductProperty(products, auditForm.ID, auditForm.State);
            instanceEnitites.T_AE_Audit.Add(auditForm);
            var designAct = list[0];

            if (startParam.ExecNext)
            {
                var actType = ActivityType.Design.ToString();
                designAct = instanceEnitites.Set <S_W_Activity>().FirstOrDefault(c => c.ActivityKey == actType && c.BusniessID == designAct.BusniessID);
            }
            SetAuditSignUser(designAct, products);

            return(list);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 设置校审人员到表单上
 /// </summary>
 /// <param name="auditForm">校审单</param>
 /// <param name="auditSteps">流程环节信息</param>
 /// <param name="designerID">设计人ID(非必要,流程启动人员非设计人时使用)</param>
 /// <param name="designerName"></param>
 public virtual void SetAuditUsers(T_AE_Audit auditForm, List <AuditStep> auditSteps, string designerID = "", string designerName = "")
 {
     foreach (var step in auditSteps)
     {
         //设计
         if (step.StepKey == ActivityType.Design)
         {
             //流程中启动(首环节)人员可能不是设计人,所有需要参数确定设计人
             if (!string.IsNullOrEmpty(step.UserID) && string.IsNullOrEmpty(designerID))
             {
                 auditForm.DesignerID   = step.UserID;
                 auditForm.DesignerName = step.UserName;
             }
             else if (!string.IsNullOrEmpty(designerID))
             {
                 auditForm.DesignerID   = designerID;
                 auditForm.DesignerName = designerName;
             }
         }//校核
         else if (step.StepKey == ActivityType.Collact)
         {
             if (!string.IsNullOrEmpty(step.UserID))
             {
                 auditForm.CollactorID   = step.UserID;
                 auditForm.CollactorName = step.UserName;
             }
         }//审核
         else if (step.StepKey == ActivityType.Audit)
         {
             if (!string.IsNullOrEmpty(step.UserID))
             {
                 auditForm.AuditorID   = step.UserID;
                 auditForm.AuditorName = step.UserName;
             }
         }//审定
         else if (step.StepKey == ActivityType.Approve)
         {
             if (!string.IsNullOrEmpty(step.UserID))
             {
                 auditForm.ApproverID   = step.UserID;
                 auditForm.ApproverName = step.UserName;
             }
         }
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// 获取校审流程启动参数
        /// </summary>
        /// <param name="auditForm"></param>
        /// <param name="auditFormUrl"></param>
        /// <param name="stepList"></param>
        /// <returns></returns>
        public virtual AuditFlowStartParam GetAuditFlowStartParam(T_AE_Audit auditForm, string auditFormUrl, List <S_E_Product> productList, S_W_WBS wbs, S_I_ProjectInfo projectInfo)
        {
            var startParam = new AuditFlowStartParam();

            startParam.DisplayName  = EnumBaseHelper.GetEnumDescription(typeof(ActivityType), ActivityType.Design.ToString()) + "(" + auditForm.Name + ")";
            startParam.AuditFormUrl = auditFormUrl;
            startParam.AuditFormID  = auditForm.ID;
            startParam.WBSID        = auditForm.WBSID;

            //参与校审的人员
            var userInfo = GetAuditRoleUser(auditForm.WBSID);
            //本次校审的环节
            var stepList = GetAuditSteps(userInfo, productList, wbs, projectInfo);

            foreach (var auditStep in stepList)
            {
                startParam.AddStep(auditStep);
            }
            return(startParam);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 设置设校审人员至校审单上
        /// </summary>
        /// <param name="audit">校审单对象</param>
        /// <param name="Users">设校审人员信息</param>
        private void SetAuditUsers(T_AE_Audit audit, List <Dictionary <string, object> > Users)
        {
            var enumDef = EnumBaseHelper.GetEnumDef(typeof(ProjectRole));

            //设置校审单上的校审人员角色
            foreach (var item in enumDef.EnumItem)
            {
                string idKey    = item.Code + "ID";
                string nameKey  = item.Code + "Name";
                var    roleUser = Users.FirstOrDefault(delegate(Dictionary <string, object> user)
                {
                    if (String.IsNullOrEmpty(user.GetValue(idKey)))
                    {
                        return(false);
                    }
                    return(true);
                });
                if (roleUser != null)
                {
                    audit.SetProperty(idKey, roleUser.GetValue(idKey));
                    audit.SetProperty(nameKey, roleUser.GetValue(nameKey));
                }
            }
        }