Ejemplo n.º 1
0
        /// <summary>
        /// 获取项目列表
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public PageResponse <List <Project> > findProjects(QueryProjectOrTaskRequest request)
        {
            var total = 0;

            var sugarQueryableList = SimpleDb.AsQueryable().Where(u =>
                                                                  u.Name.Contains(request.key) && SqlFunc.Between(u.CreateTime, request.startTime, request.endTime));

            if (!string.IsNullOrEmpty(request.type))
            {
                sugarQueryableList = sugarQueryableList.Where(u => u.Type == request.type);
            }

            // 如果是管理员 才查看所有项目 否则查询自己负责或者自己提交的项目
            var roleId = Db.Queryable <UserRole>().Where(u => u.UserId == user.UserId).Select(u => u.RoleId).First();

            if (roleId != 1)
            {
                sugarQueryableList = sugarQueryableList.Where(u => u.ChargeUserId == user.UserId || u.SubmitterId == user.UserId);
            }

            var list = sugarQueryableList.OrderBy(u => request.sortColumn,
                                                  request.sortType == "asc" ? OrderByType.Asc : OrderByType.Desc)
                       .ToPageList(request.page, request.limit, ref total);

            var pageResponse = new PageResponse <List <Project> > {
                Total = total, Result = list
            };

            return(pageResponse);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 如果一个类有层级结构(树状),则修改该节点时,要修改该节点的所有子节点
        /// //修改对象的级联ID,生成类似XXX.XXX.X.XX
        /// </summary>
        /// <param name="task"></param>
        private void ChangeModuleCascade(Task task)
        {
            string cascadeId;
            var    currentCascadeId = 1; //当前结点的级联节点最后一位
            var    sameLevels       = SimpleDb.AsQueryable().Where(u => u.ParentId == task.ParentId && u.Id != task.Id).ToList();

            foreach (var obj in sameLevels)
            {
                var objCascadeId = int.Parse(obj.CascadeId.TrimEnd('.').Split('.').Last());
                if (currentCascadeId <= objCascadeId)
                {
                    currentCascadeId = objCascadeId + 1;
                }
            }

            if (task.ParentId > 0)
            {
                var parenntTask = SimpleDb.GetSingle(u => u.Id == task.ParentId);
                if (parenntTask != null)
                {
                    cascadeId = parenntTask.CascadeId + currentCascadeId + ".";
                }
                else
                {
                    throw new Exception("未能找到该组织的父节点信息");
                }
            }
            else
            {
                cascadeId = ".0." + currentCascadeId + ".";
            }

            task.CascadeId = cascadeId;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 创建或更新任务
        /// </summary>
        /// <param name="request"></param>
        public Task addOrUpdateTask(Task task)
        {
            // 如果存在父节点任务 则判断时间范围要在父节点任务的时间范围内 如果没有父节点任务 则判断时间范围要在项目的时间范围内
            if (task.ParentId == 0)
            {
                var project = Db.Queryable <Project>().Where(u => u.Id == task.ProjectId).Single();
                if (project.StartTime > task.StartTime || project.EndTime < task.EndTime)
                {
                    throw new Exception("该任务的时间范围必须包含在所属项目的时间范围内");
                }
            }
            else
            {
                var parentTask = SimpleDb.AsQueryable().Where(u => u.Id == task.ParentId).First();
                if (parentTask.StartTime > task.StartTime || parentTask.EndTime < task.EndTime)
                {
                    throw new Exception("该任务的时间范围必须包含在上级任务的时间范围内");
                }

                // 如果上级任务存在任务提交记录 则无法新增
                if (Db.Queryable <TaskRecord>().Where(u => u.TaskId == task.ParentId).Count() > 0 && task.Id == 0)
                {
                    throw new Exception("该任务存在任务提交记录 则无法新增子任务");
                }
            }

            task.CreateTime    = DateTime.Now;
            task.SubmitterId   = user.UserId;
            task.SubmitterName = user.UserName;
            task.Progress      = 0;
            ChangeModuleCascade(task);

            return(Db.Saveable(task).ExecuteReturnEntity());
        }
Ejemplo n.º 4
0
        public TableModel <User> GetPageList(int pageIndex, int pageSize)
        {
            int         totalNumber = 0;
            int         totalPage   = 0;
            List <User> data        = SimpleDb.AsQueryable().Where(t => t.Age == 12).ToPageList(pageIndex, pageSize, ref totalNumber, ref totalPage);
            Page        page        = Utils.GetPage(pageIndex, pageSize, totalNumber, totalPage);

            return(new TableModel <User>()
            {
                count = data.Count, page = page, data = data
            });
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取用户
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public List <Users> findUsers(string key)
        {
            var list = SimpleDb.AsQueryable().Where(u => u.userName.Contains(key)).ToList();

            if (list.Count != 0)
            {
                return(list);
            }
            // 如果不是字符串包含 则按拼音首字母或者全拼来进行搜索
            var totalList = SimpleDb.AsQueryable().ToList();

            list.AddRange(totalList.Where(user =>
                                          Pinyin.GetInitials(user.userName).ToLower().StartsWith(key) ||
                                          Pinyin.GetPinyin(user.userName).Replace(" ", "").StartsWith(key)));

            return(list);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 开始任务操作按钮
        /// </summary>
        /// <param name="taskId"></param>
        public void beginTask(int taskId)
        {
            // 修改任务状态为 进行中
            var task = SimpleDb.AsQueryable().Where(u => u.Id == taskId).First();

            task.Status = 1;
            SimpleDb.Update(task);

            // 新增任务记录:开始任务
            var taskRecord = new TaskRecord
            {
                Status        = 1,
                CreateTime    = DateTime.Now,
                Desc          = "任务开始",
                SubmitterId   = user.UserId,
                SubmitterName = user.UserName,
                TaskId        = taskId
            };

            Db.Insertable(taskRecord).ExecuteCommand();
        }
        /// <summary>
        /// 获取我已提交
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public PageResponse <string> getMySubmitList(QueryPendingRequest request)
        {
            var query = SimpleDb.AsQueryable().Where(u => u.SubmitterId == user.UserId && u.Desc.Contains(request.key));

            if (!string.IsNullOrEmpty(request.startTime) && !string.IsNullOrEmpty(request.endTime))
            {
                query = query.Where(u => SqlFunc.Between(u.CreateTime, request.startTime, request.endTime));
            }

            var total = 0;
            var json  = query.Select(u => new
            {
                id         = u.Id, submitterName = u.SubmitterName, desc = u.Desc, status = u.Status, createTime = u.CreateTime,
                attachment = u.Attachment, percent = u.Percent, taskId = u.TaskId
            }).ToPageList(request.page, request.limit, ref total).ToJson();

            // 此处返回json的原因是 目前审批类别只有任务完成情况 以后可能会新增审批类别 所以统一转成json返回
            var pageResponse = new PageResponse <string> {
                Total = total, Result = json
            };

            return(pageResponse);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 找出同级别任务的占比 来进行百分百分配
        /// </summary>
        /// <param name="taskId"></param>
        /// <returns></returns>
        public List <Task> getSameLevelTask(int taskId)
        {
            var task = SimpleDb.GetSingle(u => u.Id == taskId);

            return(SimpleDb.AsQueryable().Where(u => u.ParentId == task.ParentId).ToList());
        }