sunpengfei
2025-08-12 03baa99828547434323aba429e8d6c141c79a467
FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -1,5 +1,6 @@
using FlexJobApi.Core;
using Furion.DatabaseAccessor;
using Furion.FriendlyException;
using MediatR;
using Microsoft.EntityFrameworkCore;
using System;
@@ -141,17 +142,53 @@
                    || it.EnterpriseEmployee.User.ContactPhoneNumber.Contains(request.Keywords)
                    || it.EnterpriseEmployee.User.Identity.Contains(request.Keywords));
            }
            if (request.SubmitTimeBegin.HasValue && request.SubmitTimeEnd.HasValue)
            if (logier.ClientType == EnumClientType.Wxmp)
            {
                q = q.Where(it => it.Submits.Any(s => request.SubmitTimeBegin <= s.CreatedTime && s.CreatedTime <= request.SubmitTimeEnd));
                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.Submit
                        : request.CheckReceiveStatus == EnumTaskCheckReceiveStatus.WaitCheckReceive
                        ? s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Wait
                        : (s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Success
                        || s.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))));
            }
            if (request.CheckReceiveStatus.HasValue)
            else
            {
                q = q.Where(it => it.CheckReceiveStatus == request.CheckReceiveStatus);
                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 GetCheckReceiveTaskUserInfosQueryResultItem
            {
                Id = it.TaskInfoId,
                TaskName = it.TaskInfo.Name,
                BeginTime = it.TaskInfo.BeginTime,
                EndTime = it.TaskInfo.EndTime,
                AddressName = it.TaskInfo.AddressName,
                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 = it.CheckReceiveStatus,
                LastSubmitTime = it.LastSubmitTime,
            });
            return await request.PageModel.GetPagedListAsync<GetCheckReceiveTaskUserInfosQueryResult, GetCheckReceiveTaskUserInfosQueryResultItem>(s, cancellationToken);
        }