/// <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); }
/// <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; }
/// <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()); }
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 }); }
/// <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); }
/// <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); }
/// <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()); }