public JsonResult GetList(QueryBuilder qb)
        {
            string modeCode = this.GetQueryString("ModeCode");
            var    mode     = BaseConfigFO.GetMode(modeCode);

            if (mode == null)
            {
                throw new Formula.Exceptions.BusinessException("没有找到编号为【" + modeCode + "】的管理模式,无法查询表单");
            }
            string defineInfo = this.GetQueryString("DefineInfo");
            var    isoDefine  = mode.S_T_ISODefine.FirstOrDefault(d => d.ID == defineInfo);

            if (isoDefine == null)
            {
                throw new Formula.Exceptions.BusinessException("没有找到表单类型定义,无法查询表单");
            }
            string sql  = @"select '{2}' as FormName,'{3}' as LinkUrl,ISOTableInfo.ID,ISOTableInfo.FlowPhase,case when ISOTableInfo.VersionNumber is null or ISOTableInfo.VersionNumber =''
then 1 else ISOTableInfo.VersionNumber end as VersionNumber,
ISOTableInfo.SerialNumber,ISOTableInfo.CreateUser,ISOTableInfo.CreateDate,
S_I_ProjectInfo.Name as ProjectInfoName,S_I_ProjectInfo.Code as ProjectInfoCode,
S_I_ProjectInfo.ProjectClass as ProjectInfoClass,S_I_ProjectInfo.ChargeDeptID as ProjectChargeDeptID,S_I_ProjectInfo.ChargeDeptName as ProjectChargeDeptName,
S_I_ProjectInfo.ChargeUserID as ProjectManager,
S_I_ProjectInfo.ChargeUserName as ProjectManagerName,S_I_ProjectInfo.PhaseValue as ProjectInfoPhaseValue,S_I_ProjectInfo.PhaseName as ProjectInfoPhaseName,
S_I_ProjectInfo.State as ProjectInfoState
from {0} as ISOTableInfo left join S_I_ProjectInfo on  ISOTableInfo.ProjectInfoID=S_I_ProjectInfo.ID where S_I_ProjectInfo.ModeCode='{1}'";
            var    data = this.SqlHelper.ExecuteGridData(String.Format(sql, isoDefine.TableName, modeCode, isoDefine.Name, isoDefine.LinkViewUrl), qb);

            return(Json(data));
        }
Example #2
0
        public ActionResult OBSUserSelect()
        {
            string wbsType           = this.Request["WBSType"];
            string showMajorPrincple = this.Request["ShowMajorPrincple"];
            string projectInfoID     = this.Request["ProjectInfoID"];
            var    projectInfo       = this.GetEntityByID <S_I_ProjectInfo>(projectInfoID);

            if (projectInfo == null)
            {
                throw new Formula.Exceptions.BusinessException("未能找到ID为【" + projectInfoID + "】的项目对象");
            }
            var mode = BaseConfigFO.GetMode(projectInfo.ModeCode);

            if (mode == null)
            {
                throw new Formula.Exceptions.BusinessException("编码为【" + projectInfo.ModeCode + "】的管理模式定义不存在");
            }
            var wbsStructNode = mode.S_T_WBSStructInfo.FirstOrDefault(d => d.Code == wbsType);

            if (wbsStructNode == null)
            {
                throw new Formula.Exceptions.BusinessException("未找到WBS节点定义,请确认【" + projectInfo.ModeCode + "】管理模式中存在【" + wbsType + "】的WBS定义");
            }
            var roleDefines = wbsStructNode.S_T_WBSStructRole.Where(d => d.RoleCode != ProjectRole.ProjectManager.ToString()).OrderBy(d => d.SortIndex).ToList();

            if (showMajorPrincple == false.ToString())
            {
                roleDefines = roleDefines.Where(d => d.RoleCode != ProjectRole.MajorPrinciple.ToString()).ToList();
            }
            ViewBag.RoleDefines = roleDefines;
            return(View());
        }
Example #3
0
        public JsonResult Publish(string ModeCode)
        {
            var projectMode = BaseConfigFO.GetMode(ModeCode);

            if (projectMode != null)
            {
                projectMode.Pubish();
            }
            return(Json(""));
        }
Example #4
0
        public ActionResult MileStoneTrack()
        {
            var configentities  = FormulaHelper.GetEntities <BaseConfigEntities>();
            var ProjectModeCode = GetQueryString("ProjectModeCode");

            S_T_ProjectMode pm;

            if (string.IsNullOrEmpty(ProjectModeCode))
            {
                pm = configentities.Set <S_T_ProjectMode>().FirstOrDefault();
            }
            else
            {
                pm = BaseConfigFO.GetMode(ProjectModeCode);
            }
            if (pm == null)
            {
                throw new Formula.Exceptions.BusinessException("找不到编号为【" + ProjectModeCode + "】的项目模式");
            }

            ViewBag.ProjectMode = pm;

            var phaseInfo = pm.S_T_MileStone.Where(d => d.MileStoneType == MileStoneType.Normal.ToString())
                            .Select(d => d.PhaseValue).ToList();

            var phaseList = BaseConfigFO.GetWBSAttrList(WBSNodeType.Phase).Where(d => phaseInfo.Count(c => c.Contains(d.Code)) > 0).
                            OrderBy(d => d.SortIndex).ToList();

            var MileStoneList = pm.S_T_MileStone.Where(d => d.MileStoneType == MileStoneType.Normal.ToString()).
                                OrderBy(d => d.SortIndex).ToList();

            ViewBag.MileStoneList = JsonHelper.ToJson(MileStoneList);
            var phaseArray = phaseList.Select(d => new { value = d.Code, text = d.Name }).ToList();

            ViewBag.PhaseArray = JsonHelper.ToJson(phaseArray);
            ViewBag.PhaseList  = JsonHelper.ToJson(phaseList);
            var defaultPhase = phaseList.FirstOrDefault();

            if (defaultPhase != null)
            {
                ViewBag.PhaseValue = defaultPhase.Code;
            }
            else
            {
                ViewBag.PhaseValue = "";
            }
            ViewBag.PhaseMultiSelect = true;
            if (this.GetQueryString("PhaseMultiSelect") == false.ToString().ToLower())
            {
                ViewBag.PhaseMultiSelect = false;
            }
            return(View());
        }
Example #5
0
        public JsonResult DoCopy(string ModeCode)
        {
            if (string.IsNullOrEmpty(ModeCode))
            {
                throw new Formula.Exceptions.BusinessException("请选择要复制的模版");
            }

            var projectMode = BaseConfigFO.GetMode(ModeCode);

            projectMode.DoCopy();
            entities.SaveChanges();

            return(Json(""));
        }
Example #6
0
        public JsonResult GetList(QueryBuilder qb)
        {
            var ProjectModeCode = GetQueryString("ProjectModeCode");
            var pm = BaseConfigFO.GetMode(ProjectModeCode);

            if (pm == null)
            {
                throw new Formula.Exceptions.BusinessException("找不到编号为【" + ProjectModeCode + "】的项目模式");
            }
            var mileStoneDefines = pm.S_T_MileStone.Where(d => d.MileStoneType == MileStoneType.Normal.ToString()).ToList();

            var phaseValues = qb.Items.FirstOrDefault(d => d.Field == "PhaseValues");

            qb.Items.RemoveWhere(d => d.Field == "PhaseValues");
            var mileStoneDefineList = new List <S_T_MileStone>();

            if (phaseValues != null)
            {
                var phaseValue = phaseValues.Value.ToString();
                foreach (var item in mileStoneDefines)
                {
                    var definePhases = item.PhaseValue.Split(',');
                    var phases       = phaseValue.Split(',');
                    foreach (var defPhase in definePhases)
                    {
                        if (phases.Contains(defPhase))
                        {
                            mileStoneDefineList.Add(item);
                            break;
                        }
                    }
                }
                //mileStoneDefines = mileStoneDefines.Where(d => phaseValue.Contains(d.PhaseValue)).ToList();
                var phaseValueList = phaseValue.Split(',');
                for (int i = 0; i < phaseValueList.Length; i++)
                {
                    qb.Add("PhaseValue", QueryMethod.InLike, phaseValueList[i], "quickSearchGroup", "");
                }
            }
            var mileStoneDefineIDs = mileStoneDefineList.Select(d => d.ID).ToList();

            var items = qb.Items.Where(d => d.Field == "PlanFinishDate").ToList();

            qb.Items.RemoveWhere(d => d.Field == "PlanFinishDate");

            //Count数据
            var normal        = MileStoneType.Normal.ToString();
            var projectsquery = this.entities.Set <S_I_ProjectInfo>().Include("S_P_MileStone").Where(c => c.ModeCode == ProjectModeCode)
                                .Where(qb);

            if (items.Count > 0)
            {
                foreach (var item in items)
                {
                    if (item.Value == null)
                    {
                        continue;
                    }
                    var date = Convert.ToDateTime(item.Value);
                    if (item.Method == QueryMethod.GreaterThanOrEqual)
                    {
                        projectsquery = projectsquery.Where(d => d.S_P_MileStone.Where(p => p.PlanFinishDate >= date).Count() > 0);
                    }
                    else
                    {
                        projectsquery = projectsquery.Where(d => d.S_P_MileStone.Where(p => p.PlanFinishDate <= date).Count() > 0);
                    }
                }
            }

            var countQuery = projectsquery
                             .Select(c => c.S_P_MileStone.Where(x => x.MileStoneType == normal && mileStoneDefineIDs.Contains(x.TemplateID)))
                             .AsEnumerable()
                             .SelectMany((x, y) => x);
            var finish  = ProjectCommoneState.Finish.ToString();
            var dateNow = DateTime.Now.Date;

            var countlist = new Dictionary <string, int>();

            countlist.Add(MileStoneShowStatus.DelayFinish.ToString(), countQuery.Where(c =>
                                                                                       c.State == finish && c.MileStoneType == "Normal" && c.PlanFinishDate.HasValue &&
                                                                                       c.FactFinishDate.HasValue &&
                                                                                       c.FactFinishDate.Value > c.PlanFinishDate.Value).Count()
                          );
            countlist.Add(MileStoneShowStatus.NormalFinish.ToString(), countQuery.Where(c =>
                                                                                        c.State == finish && c.MileStoneType == "Normal" && (!c.PlanFinishDate.HasValue ||
                                                                                                                                             !c.FactFinishDate.HasValue ||
                                                                                                                                             c.FactFinishDate.Value <= c.PlanFinishDate.Value)).Count()
                          );
            countlist.Add(MileStoneShowStatus.DelayUndone.ToString(), countQuery.Where(c =>
                                                                                       c.State != finish && c.MileStoneType == "Normal" &&
                                                                                       c.PlanFinishDate.HasValue &&
                                                                                       dateNow > c.PlanFinishDate.Value).Count()
                          );
            countlist.Add(MileStoneShowStatus.NormalUndone.ToString(), countQuery.Where(c =>
                                                                                        c.State != finish && c.MileStoneType == "Normal" &&
                                                                                        c.PlanFinishDate.HasValue &&
                                                                                        (dateNow <= c.PlanFinishDate.Value)).Count()
                          );

            //列表数据
            var result = new List <Dictionary <string, object> >();

            foreach (var project in projectsquery.ToList())
            {
                var projectdic    = project.ToDic("ID,Name,Code,ChargeUserName,ChargeDeptName,ModeCode,ProjectClass");
                var mileStoneList = project.S_P_MileStone.Where(d => d.MileStoneType == normal && mileStoneDefineIDs.Contains(d.TemplateID));
                foreach (var define in mileStoneDefines)
                {
                    var list       = new List <Dictionary <string, object> >();
                    var mileStones = mileStoneList.Where(d => d.TemplateID == define.ID).ToList();
                    foreach (var mileStone in mileStones)
                    {
                        var mileStoneInfo = new Dictionary <string, object>();
                        var wbs           = project.S_W_WBS.FirstOrDefault(d => d.ID == mileStone.WBSID);
                        if (wbs == null)
                        {
                            continue;
                        }
                        mileStoneInfo.SetValue("WBSName", wbs.Name);
                        mileStoneInfo.SetValue("WBSType", wbs.StructNodeInfo.Name);
                        mileStoneInfo.SetValue("ShowStatus", mileStone.ShowStatus);
                        mileStoneInfo.SetValue("MileStoneID", mileStone.ID);
                        mileStoneInfo.SetValue("FactFinishDate", mileStone.FactFinishDate);
                        mileStoneInfo.SetValue("PlanFinishDate", mileStone.PlanFinishDate);
                        mileStoneInfo.SetValue("State", mileStone.State);
                        list.Add(mileStoneInfo);
                    }
                    projectdic.SetValue("Template" + define.ID, list);
                }
                result.Add(projectdic);
            }

            GridData gridData = new GridData(result);

            gridData.total = qb.TotolCount;
            var dic = FormulaHelper.ModelToDic(gridData);

            dic.SetValue("ShowStatusCount", countlist);

            return(Json(dic));
        }