代码优化

This commit is contained in:
fuenmao
2026-08-27 11:09:20 +08:00
parent 658869b3a7
commit ae8167a566
46 changed files with 2051 additions and 204 deletions
@@ -1,4 +1,4 @@
namespace SimpleAdmin.Application;
namespace SimpleAdmin.Application;
/// <summary>
/// 实现入职任务查询业务能力。
@@ -23,6 +23,7 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
.WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo), item => item.TaskNo.Contains(input.TaskNo))
.WhereIF(!string.IsNullOrWhiteSpace(input.TaskStatus), item => item.TaskStatus == input.TaskStatus)
.WhereIF(input.CompanyId.HasValue, item => item.CompanyId == input.CompanyId.Value)
.WhereIF(input.DepartmentId.HasValue, item => item.DepartmentId == input.DepartmentId.Value)
.OrderByDescending(item => item.CreateTime)
.ToPagedListAsync(input.PageNum, input.PageSize);
@@ -191,20 +192,26 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
{
var taskList = tasks.ToList();
var companyIds = taskList.Select(t => t.CompanyId).Distinct().ToList();
var departmentIds = taskList.Where(t => t.DepartmentId.HasValue).Select(t => t.DepartmentId.Value).Distinct().ToList();
var positionIds = taskList.Select(t => t.PositionId).Distinct().ToList();
var templateIds = taskList.Select(t => t.OnboardingTemplateId).Distinct().ToList();
var companies = await _db.Queryable<ObCompany>().Where(c => companyIds.Contains(c.Id)).ToListAsync();
var departments = departmentIds.Count == 0
? new List<ObDepartment>()
: await _db.Queryable<ObDepartment>().Where(d => departmentIds.Contains(d.Id)).ToListAsync();
var positions = await _db.Queryable<ObPosition>().Where(p => positionIds.Contains(p.Id)).ToListAsync();
var templates = await _db.Queryable<ObOnboardingTemplate>().Where(t => templateIds.Contains(t.Id)).ToListAsync();
var companyMap = companies.ToDictionary(c => c.Id, c => c.CompanyName);
var departmentMap = departments.ToDictionary(d => d.Id, d => d.DepartmentName);
var positionMap = positions.ToDictionary(p => p.Id, p => p.PositionName);
var templateMap = templates.ToDictionary(t => t.Id, t => t.TemplateName);
foreach (var task in taskList)
{
if (companyMap.TryGetValue(task.CompanyId, out var cName)) task.CompanyName = cName;
if (task.DepartmentId.HasValue && departmentMap.TryGetValue(task.DepartmentId.Value, out var dName)) task.DepartmentName = dName;
if (positionMap.TryGetValue(task.PositionId, out var pName)) task.PositionName = pName;
if (templateMap.TryGetValue(task.OnboardingTemplateId, out var tName)) task.OnboardingTemplateName = tName;
}