电子签基础功能
This commit is contained in:
@@ -67,6 +67,13 @@ public class OnboardingEmployeeService : IOnboardingEmployeeService
|
||||
: await _db.Queryable<ObTaskContract>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync();
|
||||
var materials = await GetEmployeeMaterials(task?.Id);
|
||||
var electronicSignProcess = task == null
|
||||
? null
|
||||
: await _db.Queryable<ObElectronicSignProcess>()
|
||||
.Where(item => item.TaskId == task.Id && item.ArchiveFileId.HasValue)
|
||||
.OrderByDescending(item => item.Id)
|
||||
.FirstAsync();
|
||||
var audits = task == null
|
||||
? new List<ObTaskAudit>()
|
||||
: await _db.Queryable<ObTaskAudit>()
|
||||
@@ -80,10 +87,60 @@ public class OnboardingEmployeeService : IOnboardingEmployeeService
|
||||
Task = task,
|
||||
EmployeeInfo = employeeInfo,
|
||||
Contracts = contracts,
|
||||
Materials = materials,
|
||||
ElectronicSignArchiveFileId = electronicSignProcess?.ArchiveFileId,
|
||||
Audits = audits
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询员工来源任务中上传的全部材料,并补充原始文件名、后缀和文件大小。
|
||||
/// </summary>
|
||||
private async Task<List<OnboardingTaskMaterialDetailOutput>> GetEmployeeMaterials(long? taskId)
|
||||
{
|
||||
if (!taskId.HasValue)
|
||||
return new List<OnboardingTaskMaterialDetailOutput>();
|
||||
|
||||
var materials = await _db.Queryable<ObTaskMaterial>()
|
||||
.Where(item => item.TaskId == taskId.Value)
|
||||
.ToListAsync();
|
||||
if (materials.Count == 0)
|
||||
return new List<OnboardingTaskMaterialDetailOutput>();
|
||||
|
||||
var fileIds = materials
|
||||
.Select(item => item.FileId)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
var files = await _db.Queryable<SysFile>()
|
||||
.Where(item => fileIds.Contains(item.Id))
|
||||
.ToListAsync();
|
||||
var fileMap = files.ToDictionary(item => item.Id);
|
||||
|
||||
var requirements = await _db.Queryable<ObTaskMaterialRequirement>()
|
||||
.Where(item => item.TaskId == taskId.Value)
|
||||
.ToListAsync();
|
||||
var sortMap = requirements
|
||||
.GroupBy(item => item.MaterialTypeId)
|
||||
.ToDictionary(group => group.Key, group => group.Min(item => item.SortCode));
|
||||
|
||||
return materials
|
||||
.Select(material =>
|
||||
{
|
||||
var output = material.Adapt<OnboardingTaskMaterialDetailOutput>();
|
||||
if (fileMap.TryGetValue(material.FileId, out var file))
|
||||
{
|
||||
output.FileName = file.Name;
|
||||
output.FileSuffix = file.Suffix;
|
||||
output.FileSizeInfo = file.SizeInfo;
|
||||
}
|
||||
|
||||
return output;
|
||||
})
|
||||
.OrderBy(item => sortMap.GetValueOrDefault(item.MaterialTypeId, int.MaxValue))
|
||||
.ThenBy(item => item.UploadedAt)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量补充员工所属公司、部门和岗位名称,避免列表逐行查询数据库。
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user