入职任务预览,入职任务cope,验证填入的信息
This commit is contained in:
+64
-8
@@ -17,22 +17,78 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
/// <summary>
|
||||
/// 分页查询后台入职任务。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObOnboardingTask>> Page(OnboardingTaskPageInput input)
|
||||
public async Task<OnboardingTaskPageOutput> Page(OnboardingTaskPageInput input)
|
||||
{
|
||||
const string approvedGroupStatus = "approved_or_archived";
|
||||
var filterApprovedGroup = string.Equals(
|
||||
input.TaskStatus,
|
||||
approvedGroupStatus,
|
||||
StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
var list = await _db.Queryable<ObOnboardingTask>()
|
||||
.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)
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo),
|
||||
item => item.TaskNo.Contains(input.TaskNo))
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.TaskStatus) && !filterApprovedGroup,
|
||||
item => item.TaskStatus == input.TaskStatus)
|
||||
.WhereIF(filterApprovedGroup,
|
||||
item => item.TaskStatus == OnboardingTaskStatus.Approved
|
||||
|| item.TaskStatus == OnboardingTaskStatus.Archived)
|
||||
.WhereIF(input.CompanyId.HasValue,
|
||||
item => item.CompanyId == input.CompanyId.Value)
|
||||
.WhereIF(input.DepartmentId.HasValue,
|
||||
item => item.DepartmentId == input.DepartmentId.Value)
|
||||
.WhereIF(input.PositionId.HasValue,
|
||||
item => item.PositionId == input.PositionId.Value)
|
||||
.OrderByDescending(item => item.CreateTime)
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
|
||||
if (list.List != null && list.List.Any())
|
||||
{
|
||||
await FillTaskMetadata(list.List);
|
||||
}
|
||||
|
||||
return list;
|
||||
// 统计继续应用组织、岗位和任务编号条件,但不受当前状态筛选影响。
|
||||
var statusRows = await _db.Queryable<ObOnboardingTask>()
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.TaskNo),
|
||||
item => item.TaskNo.Contains(input.TaskNo))
|
||||
.WhereIF(input.CompanyId.HasValue,
|
||||
item => item.CompanyId == input.CompanyId.Value)
|
||||
.WhereIF(input.DepartmentId.HasValue,
|
||||
item => item.DepartmentId == input.DepartmentId.Value)
|
||||
.WhereIF(input.PositionId.HasValue,
|
||||
item => item.PositionId == input.PositionId.Value)
|
||||
.GroupBy(item => item.TaskStatus)
|
||||
.Select(item => new OnboardingTaskStatusCountOutput
|
||||
{
|
||||
TaskStatus = item.TaskStatus,
|
||||
Count = SqlFunc.AggregateCount(item.Id)
|
||||
})
|
||||
.ToListAsync();
|
||||
var statusCountMap = statusRows.ToDictionary(
|
||||
item => item.TaskStatus,
|
||||
item => item.Count);
|
||||
|
||||
return new OnboardingTaskPageOutput
|
||||
{
|
||||
PageNum = list.PageNum,
|
||||
PageSize = list.PageSize,
|
||||
Total = list.Total,
|
||||
Pages = list.Pages,
|
||||
List = list.List,
|
||||
HasPrevPages = list.HasPrevPages,
|
||||
HasNextPages = list.HasNextPages,
|
||||
Statistics = new OnboardingTaskStatisticsOutput
|
||||
{
|
||||
PendingFill = statusCountMap.GetValueOrDefault(
|
||||
OnboardingTaskStatus.PendingFill),
|
||||
Reviewing = statusCountMap.GetValueOrDefault(
|
||||
OnboardingTaskStatus.Reviewing),
|
||||
Rejected = statusCountMap.GetValueOrDefault(
|
||||
OnboardingTaskStatus.Rejected),
|
||||
Approved = statusCountMap.GetValueOrDefault(
|
||||
OnboardingTaskStatus.Approved)
|
||||
+ statusCountMap.GetValueOrDefault(
|
||||
OnboardingTaskStatus.Archived)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user