From e9ad7bc89609e7c424d6b1c3f3391ebd55e43277 Mon Sep 17 00:00:00 2001 From: zhangbin <460190368@qq.com> Date: Fri, 29 Nov 2024 10:43:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/ServiceApp/DataAnalysisApp.cs | 239 +++++++++++++++++- .../Response/UserOrGroupTaskResp.cs | 3 +- .../DataAnalysisController.cs | 2 +- 3 files changed, 241 insertions(+), 3 deletions(-) diff --git a/OpenAuth.App/ServiceApp/DataAnalysisApp.cs b/OpenAuth.App/ServiceApp/DataAnalysisApp.cs index 5acc635..bf769b7 100644 --- a/OpenAuth.App/ServiceApp/DataAnalysisApp.cs +++ b/OpenAuth.App/ServiceApp/DataAnalysisApp.cs @@ -380,7 +380,244 @@ namespace OpenAuth.App.ServiceApp return new Response>(); // 默认返回空列表 } + /// + /// 查看各组及人员任务信息 + /// + /// + /// + /// + public async Task>> GetGroupOrUserTaskStatisticsByTime(DateTime beginTime, DateTime endTime) + { + var user = _auth.GetCurrentUser().User; + var role = _auth.GetCurrentUser().Roles; + using (var db = base.UnitWork.CreateContext()) + { + // 管理员角色 + if (role.Any(r => r.Name.Contains("管理员")) || user.Id == -1) + { + // 获取所有小组信息 + var groupInfo = await db.SysGroup.AsQueryable().ToListAsync(); + + // 获取任务和图斑信息 + var taskInfo = await db.InsTaskgroup.AsQueryable() + .LeftJoin((a, b) => a.ReciveUserId == b.UserId) + .LeftJoin((a, b, c) => b.GroupId == c.Id) + .WhereIF(beginTime.Year != 0001, a => a.CreateTime >= beginTime && a.CreateTime <= endTime) + .Where((a, b) => !string.IsNullOrEmpty(a.ReciveUserId)) + .Select((a, b, c) => new + { + a.Id, + a.ReciveUserId, + c.Name, + a.IsComplate, + a.EndNum, + a.BeginNum, + groupId = c.Id, + }) + .ToListAsync(); + + // 组织任务信息 + var groupTaskStats = groupInfo.Select(group => + { + var groupTaskInfo = taskInfo.Where(t => t.Name == group.Name).ToList(); + + var taskCount = groupTaskInfo.Count; + var taskComplateCount = groupTaskInfo.Count(t => t.IsComplate); + var taskNoComplateCount = taskCount - taskComplateCount; + + var tuBanCount = groupTaskInfo.Sum(t => t.EndNum - t.BeginNum + 1); + var tuBanComplateCount = groupTaskInfo.Where(t => t.IsComplate).Sum(t => t.EndNum - t.BeginNum + 1); + var tuBanNoComplateCount = tuBanCount - tuBanComplateCount; + //人员任务数据 + var userList = db.SysGroupuser.AsQueryable() + .LeftJoin((a, b) => a.UserId == b.Id.ToString()) + .Where((a,b) => a.GroupId == group.Id) + .Select((a, b) => new + { + a.UserId, + b.Name, + a.GroupId + }).ToList(); + var userTaskCount = userList.Select(user => + { + var userTaskInfo = taskInfo.Where(t => t.ReciveUserId == user.UserId).ToList(); + + var userTaskCount = userTaskInfo.Count; + var userComplateCount = userTaskInfo.Count(t => t.IsComplate); + var userNoComplateCount = userTaskCount - userComplateCount; + + var userTuBanCount = userTaskInfo.Sum(t => t.EndNum - t.BeginNum + 1); + var userTuBanComplateCount = userTaskInfo.Where(t => t.IsComplate).Sum(t => t.EndNum - t.BeginNum + 1); + var userTuBanNoComplateCount = userTuBanCount - userTuBanComplateCount; + //任务列表 + var userTaskList = db.InsTaskgroup.AsQueryable() + .LeftJoin((a, b) => a.TaskId == b.Id) + .Where((a, b) => a.ReciveUserId == user.UserId) + .Select((a,b) => new + { + Id = a.Id.SelectAll(), + TaskName = b.TaskName, + }) + .ToList(); + return new UserOrGroupTaskResp + { + UserName = user.Name, + TaskCount = userTaskCount, + TaskComplateCount = userComplateCount, + TaskNoComplateCount = userNoComplateCount, + TuBanCount = userTuBanCount, + TuBanComplateCount = userTuBanComplateCount, + TuBanNoComplateCount = userTuBanNoComplateCount, + UserInsTaskList = userTaskList + }; + }).ToList(); + return new UserOrGroupTaskResp + { + UserName = group.Name, + TaskCount = taskCount, + TaskComplateCount = taskComplateCount, + TaskNoComplateCount = taskNoComplateCount, + TuBanCount = tuBanCount, + TuBanComplateCount = tuBanComplateCount, + TuBanNoComplateCount = tuBanNoComplateCount, + UserOrGroupTask = userTaskCount + }; + }).ToList(); + + return new Response> + { + Result = groupTaskStats + }; + } + else + { + // 获取所有小组信息 + var groupInfo = await db.SysGroup.AsQueryable().Where(r => r.GroupLeaderId == user.Id.ToString()).ToListAsync(); + + // 获取任务和图斑信息 + var taskInfo = await db.InsTaskgroup.AsQueryable() + .LeftJoin((a, b) => a.ReciveUserId == b.UserId) + .LeftJoin((a, b, c) => b.GroupId == c.Id) + .WhereIF(beginTime.Year != 0001, a => a.CreateTime >= beginTime && a.CreateTime <= endTime) + .Where((a, b) => !string.IsNullOrEmpty(a.ReciveUserId)) + .Select((a, b, c) => new + { + a.Id, + a.ReciveUserId, + c.Name, + a.IsComplate, + a.EndNum, + a.BeginNum, + groupId = c.Id, + }) + .ToListAsync(); + + // 组织任务信息 + var groupTaskStats = groupInfo.Select(group => + { + var groupTaskInfo = taskInfo.Where(t => t.Name == group.Name).ToList(); + + var taskCount = groupTaskInfo.Count; + var taskComplateCount = groupTaskInfo.Count(t => t.IsComplate); + var taskNoComplateCount = taskCount - taskComplateCount; + + var tuBanCount = groupTaskInfo.Sum(t => t.EndNum - t.BeginNum + 1); + var tuBanComplateCount = groupTaskInfo.Where(t => t.IsComplate).Sum(t => t.EndNum - t.BeginNum + 1); + var tuBanNoComplateCount = tuBanCount - tuBanComplateCount; + //人员任务数据 + var userList = db.SysGroupuser.AsQueryable() + .LeftJoin((a, b) => a.UserId == b.Id.ToString()) + .Where((a, b) => a.GroupId == group.Id) + .Select((a, b) => new + { + a.UserId, + b.Name, + a.GroupId + }).ToList(); + var userTaskCount = userList.Select(user => + { + var userTaskInfo = taskInfo.Where(t => t.ReciveUserId == user.UserId).ToList(); + + var userTaskCount = userTaskInfo.Count; + var userComplateCount = userTaskInfo.Count(t => t.IsComplate); + var userNoComplateCount = userTaskCount - userComplateCount; + + var userTuBanCount = userTaskInfo.Sum(t => t.EndNum - t.BeginNum + 1); + var userTuBanComplateCount = userTaskInfo.Where(t => t.IsComplate).Sum(t => t.EndNum - t.BeginNum + 1); + var userTuBanNoComplateCount = userTuBanCount - userTuBanComplateCount; + //任务列表 + var userTaskList = db.InsTaskgroup.AsQueryable() + .LeftJoin((a, b) => a.TaskId == b.Id) + .Where((a, b) => a.ReciveUserId == user.UserId) + .Select((a, b) => new + { + Id = a.Id.SelectAll(), + TaskName = b.TaskName, + }) + .ToList(); + return new UserOrGroupTaskResp + { + UserName = user.Name, + TaskCount = userTaskCount, + TaskComplateCount = userComplateCount, + TaskNoComplateCount = userNoComplateCount, + TuBanCount = userTuBanCount, + TuBanComplateCount = userTuBanComplateCount, + TuBanNoComplateCount = userTuBanNoComplateCount, + UserInsTaskList = userTaskList + }; + }).ToList(); + return new UserOrGroupTaskResp + { + UserName = group.Name, + TaskCount = taskCount, + TaskComplateCount = taskComplateCount, + TaskNoComplateCount = taskNoComplateCount, + TuBanCount = tuBanCount, + TuBanComplateCount = tuBanComplateCount, + TuBanNoComplateCount = tuBanNoComplateCount, + UserOrGroupTask = userTaskCount + }; + }).ToList(); + + return new Response> + { + Result = groupTaskStats + }; + } + } + } + + /// + /// 任务列表 + /// + /// + public async Task>>> GteTaskListByTime(DateTime beginTime, DateTime endTime, string taskName, int page, int limit) + { + using (var db = base.UnitWork.CreateContext()) + { + RefAsync totalCount = 0; + var tsakList = await db.InsTaskgroup.AsQueryable() + .LeftJoin((a, b) => a.TaskId == b.Id) + .Where((a, b) => a.CreateTime >= beginTime && a.CreateTime <= endTime) + .WhereIF(!string.IsNullOrEmpty(taskName), (a, b) => b.TaskName.Contains(taskName)) + .Select((a, b) => new InsTaskForAdminResp() + { + Id = a.Id.SelectAll(), + }).OrderByDescending((a) => a.CreateTime).ToPageListAsync(page, limit, totalCount); + + return new Response>> + { + Result = new PageInfo> + { + Items = tsakList, + Total = totalCount + } + }; + + } + } //public async Task>> GetAiShpDataExpenseAccountingTableOld(DateTime beginTime, DateTime endTime) //{ @@ -678,7 +915,7 @@ namespace OpenAuth.App.ServiceApp SetCellStyle(row21, headerStyle24); // 合并单元格 sheet2.AddMergedRegion(new CellRangeAddress(0, 0, 0, 11)); // 合并标题行 - sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 9, 11)); + sheet2.AddMergedRegion(new CellRangeAddress(1, 1, 9, 11)); int[] normalColumns2 = { 1, 2, 3, 4, 5, 6, 10 }; foreach (var index in normalColumns2) sheet2.SetColumnWidth(index, 11 * 256); // 设置列宽 sheet2.SetColumnWidth(0, 6 * 256); diff --git a/OpenAuth.App/ServiceApp/Response/UserOrGroupTaskResp.cs b/OpenAuth.App/ServiceApp/Response/UserOrGroupTaskResp.cs index beb0d0a..fff114b 100644 --- a/OpenAuth.App/ServiceApp/Response/UserOrGroupTaskResp.cs +++ b/OpenAuth.App/ServiceApp/Response/UserOrGroupTaskResp.cs @@ -16,6 +16,7 @@ namespace OpenAuth.App.ServiceApp.Response public int TaskNoComplateCount { get; set; } public int TuBanComplateCount { get; set; } public int TuBanNoComplateCount { get; set; } - + public List UserOrGroupTask { get; set; } + public List UserInsTaskList { get; set; } } } diff --git a/OpenAuth.WebApi/Controllers/ServiceControllers/DataAnalysisController.cs b/OpenAuth.WebApi/Controllers/ServiceControllers/DataAnalysisController.cs index 2c01a7b..e4a8428 100644 --- a/OpenAuth.WebApi/Controllers/ServiceControllers/DataAnalysisController.cs +++ b/OpenAuth.WebApi/Controllers/ServiceControllers/DataAnalysisController.cs @@ -52,7 +52,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers Response> response = new Response>(); try { - return await _app.GetGroupOrUserTaskAndTuBanByTime(beginTime, endTime); + return await _app.GetGroupOrUserTaskStatisticsByTime(beginTime, endTime); } catch (Exception ex) {