添加管理员统计量

Insight
zhangbin 2024-11-29 10:43:01 +08:00
parent bf2e0f30fe
commit e9ad7bc896
3 changed files with 241 additions and 3 deletions

View File

@ -380,7 +380,244 @@ namespace OpenAuth.App.ServiceApp
return new Response<List<UserOrGroupTaskResp>>(); // 默认返回空列表
}
/// <summary>
/// 查看各组及人员任务信息
/// </summary>
/// <param name="beginTime"></param>
/// <param name="endTime"></param>
/// <returns></returns>
public async Task<Response<List<UserOrGroupTaskResp>>> 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<SysGroupuser>((a, b) => a.ReciveUserId == b.UserId)
.LeftJoin<SysGroup>((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<SysUser>((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<InsTask>((a, b) => a.TaskId == b.Id)
.Where((a, b) => a.ReciveUserId == user.UserId)
.Select<dynamic>((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<List<UserOrGroupTaskResp>>
{
Result = groupTaskStats
};
}
else
{
// 获取所有小组信息
var groupInfo = await db.SysGroup.AsQueryable().Where(r => r.GroupLeaderId == user.Id.ToString()).ToListAsync();
// 获取任务和图斑信息
var taskInfo = await db.InsTaskgroup.AsQueryable()
.LeftJoin<SysGroupuser>((a, b) => a.ReciveUserId == b.UserId)
.LeftJoin<SysGroup>((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<SysUser>((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<InsTask>((a, b) => a.TaskId == b.Id)
.Where((a, b) => a.ReciveUserId == user.UserId)
.Select<dynamic>((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<List<UserOrGroupTaskResp>>
{
Result = groupTaskStats
};
}
}
}
/// <summary>
/// 任务列表
/// </summary>
/// <returns></returns>
public async Task<Response<PageInfo<List<InsTaskForAdminResp>>>> GteTaskListByTime(DateTime beginTime, DateTime endTime, string taskName, int page, int limit)
{
using (var db = base.UnitWork.CreateContext())
{
RefAsync<int> totalCount = 0;
var tsakList = await db.InsTaskgroup.AsQueryable()
.LeftJoin<InsTask>((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<PageInfo<List<InsTaskForAdminResp>>>
{
Result = new PageInfo<List<InsTaskForAdminResp>>
{
Items = tsakList,
Total = totalCount
}
};
}
}
//public async Task<Response<List<AiShpDataExpenseAccountingTableResp>>> 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);

View File

@ -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<UserOrGroupTaskResp> UserOrGroupTask { get; set; }
public List<dynamic> UserInsTaskList { get; set; }
}
}

View File

@ -52,7 +52,7 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
Response<List<UserOrGroupTaskResp>> response = new Response<List<UserOrGroupTaskResp>>();
try
{
return await _app.GetGroupOrUserTaskAndTuBanByTime(beginTime, endTime);
return await _app.GetGroupOrUserTaskStatisticsByTime(beginTime, endTime);
}
catch (Exception ex)
{