示例#1
0
        public EngineeringInfo Get(int ID)
        {
            var entity = this._DB.Get(ID);
            var proj   = this._PMContext.ProjectEntity.Find(entity.ProjectID);

            var result = new EngineeringInfo(entity);

            result.ProjectInfo = proj;

            return(result);
        }
示例#2
0
        public int Add(EngineeringInfo Engineering)
        {
            var entity = new EngineeringEntity(Engineering);

            entity.IsDelete = false;
            entity.Status   = (int)EnumEngineeringStatus.新建;
            this._DB.Add(entity);

            //  启动工程
            Start(entity.ID, Engineering.CreateUser);

            return(entity.ID);
        }
示例#3
0
        /// <summary>
        /// 工程完成
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Reason"></param>
        public void Finish(int ID)
        {
            var entity = this._DB.Get(ID);

            entity.Status     = (int)EnumEngineeringStatus.完成;
            entity.FinishDate = DateTime.Now;
            this._DB.Edit(entity);

            var engInfo = new EngineeringInfo(entity);

            // 项目负责人
            var users = engInfo.GetParentMainUsers();

            // 工程负责人
            users.Add(entity.Manager);

            // 去除重复人员
            users = users.Where((x, i) => users.FindIndex(z => z == x) == i).ToList();

            _IEngineeringNoteService.Add(new EngineeringNoteInfo()
            {
                Content       = "工程完成",
                EngineeringID = ID,
                NoteDate      = DateTime.Now,
                NoteType      = (int)EnumEngineeringNoteType.完成,
                UserID        = 0
            });

            // 给每个相关人员发送专业完成提醒
            users.ForEach(u =>
            {
                _INotificationService.Add(new NotificationInfo()
                {
                    ReceiveUser = u,
                    Head        = "工程完成",
                    Title       = "工程完成",
                    Info        = entity.Name,
                    SendUser    = 0,
                    CreateDate  = DateTime.Now,
                    EffectDate  = DateTime.Now, // 生效日期
                    SourceID    = ID,
                    SourceName  = "Engineering",
                    SourceTag   = "Finish",
                });
            });
        }
示例#4
0
 public EngineeringEntity(EngineeringInfo Info)
 {
     this.ID           = Info.ID;
     this.Name         = Info.Name;
     this.Number       = Info.Number;
     this.Type         = Info.Type;
     this.Phase        = Info.Phase;
     this.TaskType     = Info.TaskType;
     this.Manager      = Info.Manager;
     this.CreateDate   = Info.CreateDate;
     this.DeliveryDate = Info.DeliveryDate;
     this.FinishDate   = Info.FinishDate;
     this.StartDate    = Info.StartDate;
     this.StopDate     = Info.StopDate;
     this.Note         = Info.Note;
     this.IsDelete     = Info.IsDelete;
     this.ProjectID    = Info.ProjectID;
     this.Status       = Info.Status;
     this.VolLevel     = Info.VolLevel;
 }
示例#5
0
        /// <summary>
        /// 工程启动
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Reason"></param>
        public void Start(int ID, int UserID, List <int> ReceiveUserIDs = null)
        {
            var entity = this._DB.Get(ID);

            entity.Status    = (int)EnumEngineeringStatus.启动;
            entity.StartDate = DateTime.Now;
            this._DB.Edit(entity);

            var engInfo = new EngineeringInfo(entity);

            // 项目负责人
            var users = engInfo.GetParentMainUsers();

            // 工程负责人
            users.Add(entity.Manager);

            // 其他相关人员
            if (ReceiveUserIDs != null)
            {
                users.AddRange(ReceiveUserIDs);
            }

            // 去除重复人员
            var receiveUserIDs = users.Where((x, i) => users.FindIndex(z => z == x) == i).ToList();

            _IEngineeringNoteService.Add(new EngineeringNoteInfo()
            {
                Content       = string.Format("工程{0}启动", entity.Name),
                EngineeringID = ID,
                NoteDate      = DateTime.Now,
                NoteType      = (int)EnumEngineeringNoteType.启动,
                UserID        = UserID,
                ReceiveUsers  = receiveUserIDs,
                Engineering   = entity,
            });
        }
示例#6
0
        /// <summary>
        /// 工程暂停
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Reason"></param>
        public void Stop(int ID, int UserID, string Reason, List <int> ReceiveUserIDs = null)
        {
            var entity = this._DB.Get(ID);

            entity.Status   = (int)EnumEngineeringStatus.暂停;
            entity.StopDate = DateTime.Now;
            this._DB.Edit(entity);

            var engInfo = new EngineeringInfo(entity);

            // 项目负责人
            var users = engInfo.GetParentMainUsers();

            // 工程相关人员
            users.AddRange(engInfo.GetChildrenMainUsers());

            // 其他相关人员
            if (ReceiveUserIDs != null)
            {
                users.AddRange(ReceiveUserIDs);
            }

            // 去除重复人员
            var receiveUserIDs = users.Where((x, i) => users.FindIndex(z => z == x) == i).ToList();

            _IEngineeringNoteService.Add(new EngineeringNoteInfo()
            {
                Content       = string.Format("工程:{0}暂停,暂停时间:{1},说明:{2}", entity.Name, entity.StopDate, Reason),
                EngineeringID = ID,
                NoteDate      = DateTime.Now,
                NoteType      = (int)EnumEngineeringNoteType.暂停,
                UserID        = UserID,
                ReceiveUsers  = receiveUserIDs,
                Engineering   = entity,
            });
        }
示例#7
0
        public List <BizObject> Get(PageQueryParam PageParam, int Deep = int.MaxValue)
        {
            var currentUser = PageParam.CurrentUser;

            var p_All  = _IPMPermissionCheck.CheckObjAll(currentUser);
            var p_Dept = _IPMPermissionCheck.CheckObjDept(currentUser);

            var viewLevl = ObjectViewLevel.全部;

            if (p_All != PermissionStatus.Reject)
            {
                // 可以查看全部进度
            }
            else if (p_Dept != PermissionStatus.Reject)
            {
                // 可以查看部门工程进度
                viewLevl   = ObjectViewLevel.部门;
                _DeptUsers = _IDepartment.GetMyDeptUsers(currentUser);
            }
            else
            {
                // 查看与自己相关工程的进度
                viewLevl = ObjectViewLevel.个人;
            }

            #region Filter

            Expression <Func <EngineeringEntity, bool> > expression = c => !c.IsDelete;
            if (PageParam.TextCondtion != null && !string.IsNullOrEmpty(PageParam.TextCondtion))
            {
                expression = expression.And(p => p.Name.Contains(PageParam.TextCondtion) || p.Number.Contains(PageParam.TextCondtion));
            }

            foreach (DictionaryEntry filter in PageParam.FilterCondtion)
            {
                var value = filter.Value.ToString();

                if (value == "0" || string.IsNullOrEmpty(value))
                {
                    continue;
                }


                switch (filter.Key.ToString())
                {
                case "Project.ID":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.ProjectID == intVal);

                    break;
                }

                case "Engineering.ID":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.ID == intVal);

                    break;
                }

                case "Engineering.Type":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.Type == intVal);

                    break;
                }

                case "Engineering.Phase":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.Phase == intVal);
                    break;
                }

                case "Engineering.VolLevel":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.VolLevel == intVal);
                    break;
                }

                case "Engineering.TaskType":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.TaskType == intVal);
                    break;
                }

                case "Engineering.Status":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.Status == intVal);
                    break;
                }

                case "Engineering.Manager":
                {
                    var intVal = int.Parse(value);
                    expression = expression.And(c => c.Manager == intVal);
                    break;
                }

                case "Engineering.DateRange":
                {
                    var intVal = int.Parse(value);
                    switch (intVal)
                    {
                    case 0: break;

                    case 1: break;

                    case 2: break;

                    case 3: break;

                    case 4: break;

                    default:
                        break;
                    }
                    break;
                }

                default:
                    break;
                }
            }
            #endregion

            var list = _DB.GetList(expression);

            var result        = new List <BizObject>();
            var haspermission = false;
            foreach (var item in list)
            {
                var obj = new EngineeringInfo(item);

                haspermission = checkPermission(viewLevl, currentUser, obj);

                if (Deep > 1)
                {
                    setChildren(obj, PageParam, haspermission, viewLevl, currentUser, 2, Deep);
                }

                if (haspermission || (obj.Children != null && obj.Children.Count > 0))
                {
                    result.Add(obj);
                }
            }

            return(result);
        }
示例#8
0
 public int Create(EngineeringInfo Info)
 {
     return(this._IEngineeringService.Add(Info));
 }