| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | [UnitOfWork(false)] |
| | | public async Task<GetCheckReceiveTaskUserSubmitsQueryResult> Handle(GetCheckReceiveTaskUserSubmitsQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = repTaskInfoUserSubmit.AsQueryable().AsNoTracking() |
| | | .OrderByDescending(it => it.CreatedTime) |
| | | .AsQueryable(); |
| | | TaskInfoUser? taskUser = null; |
| | | if (logier.Type == EnumUserType.Personal) |
| | | { |
| | | if (request.TaskInfoId == null) throw Oops.Oh(EnumErrorCodeType.s400, "请选择任务"); |
| | | q = q.Where(it => it.TaskInfoUser.TaskInfoId == request.TaskInfoId && it.TaskInfoUser.EnterpriseEmployee.UserId == logier.Id); |
| | | if (request.TaskInfoId == null) throw Oops.Oh(EnumErrorCodeType.s404, "任务"); |
| | | taskUser = await repTaskInfoUser.AsQueryable() |
| | | .Include(it => it.TaskInfo) |
| | | .Include(it => it.EnterpriseEmployee).ThenInclude(it => it.User) |
| | | .Where(it => |
| | | it.TaskInfoId == request.TaskInfoId |
| | | && it.EnterpriseEmployee.UserId == logier.Id) |
| | | .FirstOrDefaultAsync(); |
| | | } |
| | | else |
| | | { |
| | | if (request.Id == null) throw Oops.Oh(EnumErrorCodeType.s400, "请选择灵工"); |
| | | q = q.Where(it => it.TaskInfoUserId == request.Id); |
| | | } |
| | | var s = q.Select(it => new GetCheckReceiveTaskUserSubmitsQueryResultItem |
| | | { |
| | | Id = it.Id, |
| | | Date = it.Date, |
| | | CreatedTime = it.CreatedTime, |
| | | Files = it.Files.Select(f => f.File).ToList(), |
| | | CheckReceiveStatus = it.CheckReceiveStatus, |
| | | CheckReceiveTime = it.CheckReceiveTime, |
| | | }); |
| | | var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserSubmitsQueryResult, GetCheckReceiveTaskUserSubmitsQueryResultItem>(s, cancellationToken); |
| | | if (request.Id.HasValue) |
| | | { |
| | | result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking() |
| | | taskUser = await repTaskInfoUser.AsQueryable() |
| | | .Include(it => it.TaskInfo) |
| | | .Include(it => it.EnterpriseEmployee).ThenInclude(it => it.User) |
| | | .Where(it => it.Id == request.Id) |
| | | .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>(); |
| | | .FirstOrDefaultAsync(); |
| | | } |
| | | else if (request.TaskInfoId.HasValue) |
| | | if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "任务"); |
| | | var q = repTaskInfoUserSubmit.AsQueryable().AsNoTracking() |
| | | .Include(it => it.Files) |
| | | .OrderByDescending(it => it.Date) |
| | | .Where(it => it.TaskInfoUserId == taskUser.Id); |
| | | var dates = await q |
| | | .Select(it => it.Date) |
| | | .ToListAsync(); |
| | | for (DateTime i = taskUser.TaskInfo.BeginTime.Date; i <= taskUser.TaskInfo.EndTime.Date; i = i.AddDays(1)) |
| | | { |
| | | result.ObjectData = await repTaskInfoUser.AsQueryable().AsNoTracking() |
| | | .Where(it => it.TaskInfoId == request.TaskInfoId) |
| | | .GetDetail<TaskInfoUser, GetCheckReceiveTaskUserSubmitsQueryResultObjectData>(); |
| | | if (!dates.Contains(i)) |
| | | { |
| | | var entity = new TaskInfoUserSubmit |
| | | { |
| | | TaskInfoUserId = taskUser.Id, |
| | | Date = i, |
| | | CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit |
| | | }; |
| | | await repTaskInfoUserSubmit.InsertNowAsync(entity); |
| | | } |
| | | } |
| | | if (result.ObjectData != null) |
| | | |
| | | var s = q |
| | | .Select(it => new GetCheckReceiveTaskUserSubmitsQueryResultItem |
| | | { |
| | | Id = it.Id, |
| | | Date = it.Date, |
| | | CreatedTime = it.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit |
| | | ? null |
| | | : it.CreatedTime, |
| | | Files = it.Files.Select(f => f.File).ToList(), |
| | | CheckReceiveStatus = it.CheckReceiveStatus, |
| | | CheckReceiveTime = it.CheckReceiveTime, |
| | | }); |
| | | var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserSubmitsQueryResult, GetCheckReceiveTaskUserSubmitsQueryResultItem>(s, cancellationToken); |
| | | |
| | | result.ObjectData = new GetCheckReceiveTaskUserSubmitsQueryResultObjectData |
| | | { |
| | | result.ObjectData.EnterpriseEmployeeUser.IsBindBankCard = await repTaskInfo.Change<UserBankCard>() |
| | | .AsQueryable().AsNoTracking() |
| | | .AnyAsync(it => it.UserId == result.ObjectData.EnterpriseEmployeeUser.Id); |
| | | } |
| | | EnterpriseEmployeeUser = taskUser.EnterpriseEmployee.User.Adapt<GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser>(), |
| | | TaskInfo = taskUser.TaskInfo.Adapt<GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo>() |
| | | }; |
| | | result.ObjectData.EnterpriseEmployeeUser.IsBindBankCard = await repTaskInfo.Change<UserBankCard>() |
| | | .AsQueryable().AsNoTracking() |
| | | .AnyAsync(it => it.UserId == result.ObjectData.EnterpriseEmployeeUser.Id); |
| | | return result; |
| | | } |
| | | |
| | |
| | | Id = entity.Id, |
| | | Date = entity.Date, |
| | | CreatedTime = entity.CreatedTime, |
| | | CheckReceiveStatus = entity.CheckReceiveStatus, |
| | | }; |
| | | if (model.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit) |
| | | { |
| | | model.CreatedTime = null; |
| | | } |
| | | model.TaskInfoUserEnterpriseEmployeeUser = await repUser.AsQueryable().AsNoTracking() |
| | | .Where(it => it.EnterpriseEmployees.Any(ee => ee.TaskInfoUsers.Any(tu => tu.Id == entity.TaskInfoUserId))) |
| | | .ProjectToType<GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser>() |