/// <summary>
        /// 根据ProjectID,SpaceID获取立项编号
        /// </summary>
        /// <param name="projectBinder"></param>
        /// <returns></returns>
        public int?GetProjectRequestTask(ProjectBinder projectBinder)
        {
            using (ABZG_DSEntities dbcontext = new ABZG_DSEntities())
            {
                LogHelper.WriteLog("ready to get linked specid");
                int?linkedSpecID = (from b in dbcontext.Bug where b.ProjectID == projectBinder.ProjectID && b.SubProjectID == -(1500000001 + projectBinder.SpaceID) select b).SingleOrDefault <Bug>().LinkedSpecID;

                projectBinder.ProjectRequestID = -linkedSpecID;
                LogHelper.WriteLog("linked specid" + projectBinder.ProjectRequestID);
                return(projectBinder.ProjectRequestID);
            }
        }
        /// <summary>
        /// 根据传入的项目,获取详细的项目信息,封装成项目实体类返回
        /// </summary>
        /// <param name="projectBinder"></param>
        /// <returns></returns>
        public Project GetProjectInfo(ProjectBinder projectBinder)
        {
            Project project = null;

            //根据传入的获取项目信息
            try
            {
                project = new Project(projectBinder);

                //获取项目的基础信息,也要通过app.config记录的匹配信息,获取指定字段的匹配信息
            }
            catch (Exception ex)
            {
                //  LogHelper.WriteLog($"项目初始化发生异常:" + ex.Message);
                LogHelper.Error($"项目初始化发生异常:" + ex.Message, ex);
            }
            return(project);
        }
        /// <summary>
        /// 根据传入的项目,获取项目的wbs结构,封装成wbs泛型实体类
        /// </summary>
        /// <param name="projectBinder"></param>
        /// <returns></returns>
        public WBSInfo GetWBS(ProjectBinder projectBinder)
        {
            //获取项目下的链接的开发空间中的space下一层目录
            //根据app.config记录的名称和编号的匹配关系,封装成wbs
            WBSInfo wbs = null;

            //根据传入的获取项目信息
            try
            {
                wbs = new WBSInfo(projectBinder);

                //获取项目的基础信息,也要通过app.config记录的匹配信息,获取指定字段的匹配信息
            }
            catch (Exception ex)
            {
                //LogHelper.WriteLog($"wbs初始化发生异常:" + ex.Message);
                LogHelper.Error($"wbs初始化发生异常:" + ex.Message, ex);
            }
            return(wbs);
        }
 /// <summary>
 /// 根据传入的项目,获取项目的预算信息,封装成预算实体类返回
 /// </summary>
 /// <param name="projectBinder"></param>
 /// <returns></returns>
 public ProjectBudget GetProjectBudget(ProjectBinder projectBinder)
 {
     //解析项目下指定类型任务中指定字段的值,把table格式解析成json
     return(null);
 }
Exemple #5
0
        //构造函数实现按照指定的项目SpaceID获取具体的项目信息
        public Project(ProjectBinder projectBinder)
        {
            using (ABZG_DSEntities dbcontext = new ABZG_DSEntities())
            {
                //立项任务编号
                //int? BugID = new ProjectHelper().GetProjectRequestTask(projectBinder);
                int?BugID = projectBinder.ProjectRequestID;


                //指定立项任务存储在表CustomerFieldTrackExt中的信息集合
                var customerFieldTrackExt = (from c in dbcontext.CustomerFieldTrackExt where c.ProjectID == projectBinder.ProjectID && c.BugID == BugID select c).SingleOrDefault <CustomerFieldTrackExt>();
                //指定SpaceID所在的表Subproject的单条数据
                var subproject = (from p in dbcontext.SubProject where p.ProjectID == projectBinder.ProjectID && p.SubProjectID == projectBinder.SpaceID select p).SingleOrDefault <SubProject>();

                //项目类型和编码的字典集合
                code4ProjectType = (from code in dbcontext.CustomerFieldListValue where code.ProjectID == projectBinder.ProjectID && code.CustomFieldID == 505 select code).ToDictionary(k => k.ChoiceName.Split(' ')[0], v => v.ChoiceName.Split(' ')[1]);
                //部门类型和编码的字典集合
                code4Depart = (from code in dbcontext.CustomerFieldListValue where code.ProjectID == projectBinder.ProjectID && code.CustomFieldID == 503 select code).ToDictionary(k => k.ChoiceName.Split(' ')[0], v => v.ChoiceName.Split(' ')[1]);

                //用户表集合
                var login = (from l in dbcontext.LogIn select l);

                //获取项目经理对应的personID
                var bugSelection = (from b in dbcontext.BugSelectionInfo select b);
                int loginID      = (from c in bugSelection where c.ProjectID == projectBinder.ProjectID && c.BugID == BugID && c.FieldID == 7 select c.FieldSelectionID).SingleOrDefault();

                //-------------以下是给项目属性赋值---------------------------
                //PPM基础项目编号
                BaseProjectID  = projectBinder.ProjectID;
                ProjectSpaceID = projectBinder.SpaceID;
                //项目编码
                ProjectUniqueID = customerFieldTrackExt.Desc_Custom_1;
                //项目名称
                ProjectName = subproject.Title;
                //项目类型
                ProjectType = customerFieldTrackExt.Desc_Custom_3 is null?"": customerFieldTrackExt.Desc_Custom_3;
                //项目类型对应的编码
                if (code4ProjectType.ContainsKey(ProjectType))
                {
                    ProjectTypeID = code4ProjectType[ProjectType];
                }
                ;

                //项目经理 need improve it..
                ProjectManager = (from c in login where c.PersonID == loginID select c.Login1).SingleOrDefault().ToString();
                //ProjectManager = 00000002;
                //项目代号
                ProjectCodeName = subproject.Title;

                //委托部门名称
                var code4DepartName = customerFieldTrackExt.Custom_4 == null ? "" : customerFieldTrackExt.Custom_4;

                //委托部门
                if (!(code4DepartName == ""))
                {
                    if (code4Depart.ContainsKey(customerFieldTrackExt.Custom_4))
                    {
                        DelegateDepartment = code4Depart[customerFieldTrackExt.Custom_4];
                    }
                    ;
                }
                else
                {
                    DelegateDepartment = "";
                }

                //承担部门
                if (code4Depart.ContainsKey(customerFieldTrackExt.Custom_6))
                {
                    UnderTaskDepartment = code4Depart[customerFieldTrackExt.Custom_6];
                }
                ;
                //项目复杂度等级
                ProjectComplexLevel = customerFieldTrackExt.Custom_10;
                //项目优先级
                ProjectPriority = customerFieldTrackExt.Custom_11;
                //项目状态
                switch (projectBinder.MyFlag)
                {
                case Flag.insert:
                    ProjectStatus = "下达";
                    break;

                case Flag.delay:
                    ProjectStatus = "暂停";
                    break;

                case Flag.close:
                    ProjectStatus = "关闭";
                    break;

                default:
                    ProjectStatus = "";
                    break;
                }
            }
        }
Exemple #6
0
        public WBSInfo(ProjectBinder projectBinder)
        {
            //wbs编码赋值,初始化wbs编码字典,后续这里通过获取表的值,分析得到
            //code4Wbs = new Dictionary<string, string>()
            //    {
            //        { "TR1/TR2","01"},
            //        { "TR3","02"},
            //        { "TR4A","03"},
            //        { "TR5","04"},
            //        { "TR6","05"},
            //        { "概念与计划阶段","06"},
            //        { "开发阶段","07"},
            //        { "验证阶段","08"},
            //        { "结项阶段","09"},
            //        { "立项准备","10"}
            //    };


            using (ABZG_DSEntities dbcontext = new ABZG_DSEntities())
            {
                //  code4Wbs = (from code in dbcontext.CustomerFieldListValue where code.ProjectID == projectBinder.ProjectID && code.CustomFieldID == 508 select code).ToDictionary(k => k.ChoiceName.Split(' ')[0], v => v.ChoiceName.Split(' ')[1]);
                //立项任务编号
                // int? BugID = new ProjectHelper().GetProjectRequestTask(projectBinder);
                int?BugID = projectBinder.ProjectRequestID;
                //指定立项任务存储在表CustomerFieldTrackExt中的信息集合
                var customerFieldTrackExt = (from c in dbcontext.CustomerFieldTrackExt where c.ProjectID == projectBinder.ProjectID && c.BugID == BugID select c).SingleOrDefault <CustomerFieldTrackExt>();

                var spaceLink = (from link in dbcontext.SpaceLink where link.ProjectID == projectBinder.ProjectID && link.ProjectTypeID == 41 && link.SpaceID == projectBinder.SpaceID select link);

                //项目类型------
                ProjectType = customerFieldTrackExt.Desc_Custom_3 is null ? "" : customerFieldTrackExt.Desc_Custom_3;

                //项目编码
                ProjectUniqueID = customerFieldTrackExt.Desc_Custom_1;

                if (spaceLink.Where(s => s.ToProjectTypeID == 1).Count() > 0)
                {
                    DevProjectID = spaceLink.Where(s => s.ToProjectTypeID == 1).SingleOrDefault().ToProjectID;
                    DevSpaceID   = spaceLink.Where(s => s.ToProjectTypeID == 1).SingleOrDefault().ToSpaceID;
                    //把sql的in查询用linq的嵌套查询来实现
                    //第一步:获取项目下的child folder  id列表
                    var releaseIDList = from f in dbcontext.SubProjectTree where f.ProjectID == DevProjectID && f.ParentID == DevSpaceID select f.ChildID;

                    //第二步:获取所有的sub folders
                    // var allreleaseFolders = from sub in dbcontext.SubProject where sub.ProjectID == DevProjectID && sub.SubProjectType == 99 select sub;
                    var allreleaseFolders = from sub in dbcontext.SubProject where sub.ProjectID == DevProjectID && sub.SubProjectType != 2002
                                            select sub;

                    //第三步:获取对应项目下的满足的folders
                    var releaseFolders = from s in allreleaseFolders where releaseIDList.Contains(s.SubProjectID) select new { s.Title, s.ProjectID, s.SubProjectID };

                    WbsFolders = new List <WBSFolder>();
                    if (releaseFolders.Count() > 0)
                    {
                        foreach (var item in releaseFolders)
                        {
                            WbsFolders.Add(new WBSFolder()
                            {
                                WBSFolderID = item.SubProjectID,
                                WBSName     = item.Title,
                                // WBSUniqueNo = code4Wbs.ContainsKey(item.Title) ? code4Wbs[item.Title] : "NoneMatchCode"
                                WBSUniqueNo = item.SubProjectID.ToString()
                            });
                        }
                    }
                    else
                    {
                    }
                }
                ;
            }
        }