| | |
| | | public class TaskUserSubmitQueryHandler( |
| | | IRepository<TaskInfo> repTaskInfo, |
| | | IRepository<TaskInfoUser> repTaskInfoUser) : |
| | | IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult>, |
| | | IRequestHandler<GetCheckReceiveTaskUserQuery, GetCheckReceiveTaskUserQueryResult> |
| | | IRequestHandler<GetCheckReceiveTasksQuery, GetCheckReceiveTasksQueryResult>, |
| | | IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult> |
| | | { |
| | | private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo; |
| | | private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser; |
| | |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<GetCheckReceiveTaskQueryResult> Handle(GetCheckReceiveTaskQuery request, CancellationToken cancellationToken) |
| | | public async Task<GetCheckReceiveTasksQueryResult> Handle(GetCheckReceiveTasksQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = repTaskInfo.AsQueryable().AsNoTracking() |
| | |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s400, "请选择验收状态"); |
| | | } |
| | | if (request.DateBegin == null || request.DateEnd == null) |
| | | if (request.Date == null) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s400, "请选择日期"); |
| | | } |
| | | q = q.Where(it => |
| | | it.TaskInfoUsers.Any(tu => |
| | | tu.Submits.Any(s => |
| | | request.DateBegin.Value.Date <= s.Date.Date |
| | | && s.Date.Date <= request.DateEnd.Value.Date |
| | | tu.EnterpriseEmployee.UserId == logier.Id |
| | | && tu.Submits.Any(s => |
| | | s.Date.Date == request.Date.Value.Date |
| | | && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit |
| | | ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit |
| | | : request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive |
| | |
| | | } |
| | | else |
| | | { |
| | | if (request.DateBegin.HasValue && request.DateEnd.HasValue) |
| | | if (request.CheckReceiveTimeBegin.HasValue && request.CheckReceiveTimeEnd.HasValue) |
| | | { |
| | | q = q.Where(it => |
| | | it.TaskInfoUsers.Any(tu => |
| | | tu.Submits.Any(s => |
| | | request.DateBegin.Value.Date <= s.Date.Date |
| | | && s.Date.Date <= request.DateEnd.Value.Date))); |
| | | q = q.Where(it => request.CheckReceiveTimeBegin <= it.LastCheckReceiveTime && it.LastCheckReceiveTime <= request.CheckReceiveTimeEnd); |
| | | } |
| | | if (request.CheckReceiveStatus.HasValue) |
| | | { |
| | | q = q.Where(it => it.CheckReceiveStatus == request.CheckReceiveStatus); |
| | | } |
| | | } |
| | | var s = q.ProjectToType<GetCheckReceiveTaskQueryResultItem>(); |
| | | return await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskQueryResult, GetCheckReceiveTaskQueryResultItem>(s, cancellationToken); |
| | | var s = q.ProjectToType<GetCheckReceiveTasksQueryResultItem>(); |
| | | return await request.PageModel.GetPagedListAsync<GetCheckReceiveTasksQueryResult, GetCheckReceiveTasksQueryResultItem>(s, cancellationToken); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 查询验收分页列表 |
| | | /// 查询验收任务详情 |
| | | /// </summary> |
| | | /// <param name="request"></param> |
| | | /// <param name="cancellationToken"></param> |
| | | /// <returns></returns> |
| | | public async Task<GetCheckReceiveTaskUserQueryResult> Handle(GetCheckReceiveTaskUserQuery request, CancellationToken cancellationToken) |
| | | public async Task<GetCheckReceiveTaskQueryResult> Handle(GetCheckReceiveTaskQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = repTaskInfoUser.AsQueryable().AsNoTracking() |
| | | .OrderBy(it => it.CreatedTime) |
| | | .AsQueryable(); |
| | | .Where(it => it.TaskInfoId == request.TaskInfoId); |
| | | |
| | | if (logier.Type == EnumUserType.Personal) |
| | | { |
| | |
| | | { |
| | | q = q.Where(it => it.TaskInfo.EnterpriseId == logier.EnterpriseId); |
| | | } |
| | | if (request.TaskInfoId.HasValue) |
| | | { |
| | | q = q.Where(it => it.TaskInfoId == request.TaskInfoId); |
| | | } |
| | | if (request.Keywords.IsNotNull()) |
| | | { |
| | | q = q.Where(it => |
| | | it.EnterpriseEmployee.User.Name.Contains(request.Keywords) |
| | | || it.EnterpriseEmployee.User.ContactPhoneNumber.Contains(request.Keywords) |
| | | || it.EnterpriseEmployee.User.Identity.Contains(request.Keywords)); |
| | | } |
| | | if (logier.ClientType == EnumClientType.Wxmp) |
| | | { |
| | | if (request.CheckReceiveStatus == null) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s400, "请选择验收状态"); |
| | | } |
| | | if (request.DateBegin == null || request.DateEnd == null) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s400, "请选择日期"); |
| | | } |
| | | q = q.Where(it => it.Submits.Any(s => |
| | | request.DateBegin.Value.Date <= s.Date.Date |
| | | && s.Date.Date <= request.DateEnd.Value.Date |
| | | && (request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitSubmit |
| | | ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit |
| | | : request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive |
| | | ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive |
| | | : (s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success |
| | | || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail)))); |
| | | } |
| | | else |
| | | { |
| | | if (request.DateBegin.HasValue && request.DateEnd.HasValue) |
| | | { |
| | | q = q.Where(it => it.Submits.Any(s => |
| | | request.DateBegin.Value.Date <= s.Date.Date |
| | | && s.Date.Date <= request.DateEnd.Value.Date)); |
| | | } |
| | | if (request.CheckReceiveStatus.HasValue) |
| | | { |
| | | q = q.Where(it => it.CheckReceiveStatus == request.CheckReceiveStatus); |
| | | } |
| | | } |
| | | var s = q.Select(it => new GetCheckReceiveTaskUserQueryResultItem |
| | | var s = q.Select(it => new GetCheckReceiveTaskQueryResultItem |
| | | { |
| | | Id = it.TaskInfoId, |
| | | TaskName = it.TaskInfo.Name, |
| | | BeginTime = it.TaskInfo.BeginTime, |
| | | EndTime = it.TaskInfo.EndTime, |
| | | AddressName = it.TaskInfo.AddressName, |
| | | TaskInfoCode = it.TaskInfo.Code, |
| | | TaskInfoName = it.TaskInfo.Name, |
| | | Avatar = it.EnterpriseEmployee.User.Avatar, |
| | | Name = it.EnterpriseEmployee.User.Name, |
| | | Identity = it.EnterpriseEmployee.User.Identity, |
| | | Age = it.EnterpriseEmployee.User.Age, |
| | | Gender = it.EnterpriseEmployee.User.Gender, |
| | | ContactPhoneNumber = it.EnterpriseEmployee.User.ContactPhoneNumber, |
| | | CheckReceiveStatus = logier.ClientType == EnumClientType.Wxmp && request.DateBegin.HasValue && request.DateEnd.HasValue |
| | | ? it.Submits |
| | | .Where(s => |
| | | request.DateBegin.Value.Date <= s.Date.Date |
| | | && s.Date.Date <= request.DateEnd.Value.Date) |
| | | .Select(s => |
| | | s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit |
| | | ? EnumTaskCheckReceiveStatus.WaitSubmit |
| | | : s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.WaitCheckReceive |
| | | ? EnumTaskCheckReceiveStatus.WaitCheckReceive |
| | | : EnumTaskCheckReceiveStatus.Completed) |
| | | .FirstOrDefault() |
| | | : it.CheckReceiveStatus, |
| | | IsReal = it.EnterpriseEmployee.User.IsReal, |
| | | RealMethod = it.EnterpriseEmployee.User.RealMethod, |
| | | CheckReceiveStatus = it.CheckReceiveStatus, |
| | | LastSubmitTime = it.LastSubmitTime, |
| | | }); |
| | | return await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserQueryResult, GetCheckReceiveTaskUserQueryResultItem>(s, cancellationToken); |
| | | var result = await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskQueryResult, GetCheckReceiveTaskQueryResultItem>(s, cancellationToken); |
| | | return result; |
| | | } |
| | | } |
| | | } |