11
This commit is contained in:
+41
-19
@@ -33,28 +33,50 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
var task = await _db.Queryable<ObOnboardingTask>().InSingleAsync(input.Id)
|
||||
?? throw Oops.Bah("入职任务不存在");
|
||||
|
||||
var employeeInfo = await _db.Queryable<ObTaskEmployeeInfo>()
|
||||
.FirstAsync(item => item.TaskId == task.Id);
|
||||
var contracts = await _db.Queryable<ObTaskContract>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync();
|
||||
var materials = await _db.Queryable<ObTaskMaterial>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync();
|
||||
var materialFileIds = materials
|
||||
.Select(item => item.FileId)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var materialFiles = await _db.Queryable<SysFile>()
|
||||
.Where(item => materialFileIds.Contains(item.Id))
|
||||
.ToListAsync();
|
||||
var materialFileMap = materialFiles.ToDictionary(item => item.Id);
|
||||
var materialOutputs = materials.Select(material =>
|
||||
{
|
||||
var output = material.Adapt<OnboardingTaskMaterialDetailOutput>();
|
||||
if (materialFileMap.TryGetValue(material.FileId, out var file))
|
||||
{
|
||||
output.FileName = file.Name;
|
||||
output.FileSuffix = file.Suffix;
|
||||
}
|
||||
|
||||
return output;
|
||||
}).ToList();
|
||||
var link = await _db.Queryable<ObTaskLink>()
|
||||
.Where(item => item.TaskId == task.Id && item.LinkStatus == "active")
|
||||
.OrderByDescending(item => item.CreateTime)
|
||||
.FirstAsync();
|
||||
var audits = await _db.Queryable<ObTaskAudit>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.OrderByDescending(item => item.AuditedAt)
|
||||
.ToListAsync();
|
||||
|
||||
return new OnboardingTaskDetailOutput
|
||||
{
|
||||
Task = task,
|
||||
EmployeeInfo = await _db.Queryable<ObTaskEmployeeInfo>()
|
||||
.FirstAsync(item => item.TaskId == task.Id),
|
||||
Contracts = await _db.Queryable<ObTaskContract>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync(),
|
||||
Materials = await _db.Queryable<ObTaskMaterial>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync(),
|
||||
FormValues = await _db.Queryable<ObTaskFormValue>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync(),
|
||||
Link = await _db.Queryable<ObTaskLink>()
|
||||
.Where(item => item.TaskId == task.Id && item.LinkStatus == "active")
|
||||
.OrderByDescending(item => item.CreateTime)
|
||||
.FirstAsync(),
|
||||
Audits = await _db.Queryable<ObTaskAudit>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.OrderByDescending(item => item.AuditedAt)
|
||||
.ToListAsync()
|
||||
EmployeeInfo = employeeInfo,
|
||||
Contracts = contracts,
|
||||
Materials = materialOutputs,
|
||||
Link = link,
|
||||
Audits = audits
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user