| | |
| | | using FlexJobApi.Core; |
| | | using Aop.Api.Domain; |
| | | using FlexJobApi.Core; |
| | | using Furion.DatabaseAccessor; |
| | | using Furion.DistributedIDGenerator; |
| | | using Furion.FriendlyException; |
| | | using Mapster; |
| | | using MediatR; |
| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using TaskInfo = FlexJobApi.Core.TaskInfo; |
| | | |
| | | namespace FlexJobApi.FlexJobServer.Application |
| | | { |
| | |
| | | public class TaskCheckReceiveQueryHandler( |
| | | IRepository<TaskInfo> repTaskInfo, |
| | | IRepository<TaskInfoUser> repTaskInfoUser, |
| | | IRepository<User> repUser, |
| | | IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit) : |
| | | IRequestHandler<GetCheckReceiveTasksQuery, GetCheckReceiveTasksQueryResult>, |
| | | IRequestHandler<GetCheckReceiveTaskQuery, GetCheckReceiveTaskQueryResult>, |
| | |
| | | /// <returns></returns> |
| | | public async Task<GetCheckReceiveTasksQueryResult> Handle(GetCheckReceiveTasksQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var now = DateTime.Now; |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = repTaskInfo.AsQueryable().AsNoTracking() |
| | | .OrderBy(it => it.CreatedTime) |
| | | .AsQueryable(); |
| | | IQueryable<TaskInfo> q = repTaskInfo.AsQueryable().AsNoTracking() |
| | | .OrderBy(it => it.CreatedTime); |
| | | |
| | | if (logier.Type == EnumUserType.Personal) |
| | | { |
| | |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | var q = repTaskInfoUser.AsQueryable().AsNoTracking() |
| | | .OrderBy(it => it.CreatedTime) |
| | | .Where(it => it.TaskInfoId == request.TaskInfoId); |
| | | .Where(it => it.TaskInfoId == request.TaskInfoId && it.ArrangeStatus == EnumTaskUserArrangeStatus.Complete); |
| | | |
| | | if (logier.Type == EnumUserType.Personal) |
| | | { |
| | |
| | | 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, |
| | |
| | | /// <returns></returns> |
| | | public async Task<GetCheckReceiveTaskUserSubmitQueryResult> Handle(GetCheckReceiveTaskUserSubmitQuery request, CancellationToken cancellationToken) |
| | | { |
| | | var q = repTaskInfoUserSubmit.AsQueryable().AsNoTracking(); |
| | | var logier = JwtUtils.GetCurrentLogier(); |
| | | TaskInfoUserSubmit? entity = null; |
| | | var q = repTaskInfoUserSubmit.AsQueryable(); |
| | | if (request.SubmitId.HasValue) |
| | | { |
| | | q = q.Where(it => it.Id == request.SubmitId.Value); |
| | | entity = await q.FirstOrDefaultAsync(); |
| | | if (entity == null) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s404, "提交信息"); |
| | | } |
| | | } |
| | | else if (request.Date.HasValue && request.TaskInfoId.HasValue) |
| | | { |
| | | q = q.Where(it => it.Date.Date == request.Date.Value.Date && it.TaskInfoUser.TaskInfoId == request.TaskInfoId.Value); |
| | | var taskUser = await repTaskInfoUser.AsQueryable().AsNoTracking() |
| | | .Where(it => |
| | | it.EnterpriseEmployee.UserId == logier.Id |
| | | && it.TaskInfoId == request.TaskInfoId) |
| | | .FirstOrDefaultAsync(); |
| | | if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "任务"); |
| | | q = q.Where(it => |
| | | it.Date.Date == request.Date.Value.Date |
| | | && it.TaskInfoUserId == taskUser.Id); |
| | | entity = await q.FirstOrDefaultAsync(); |
| | | if (entity == null) |
| | | { |
| | | entity = new TaskInfoUserSubmit |
| | | { |
| | | Id = IDGen.NextID(), |
| | | TaskInfoUserId = taskUser.Id, |
| | | Date = request.Date.Value.Date, |
| | | CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit, |
| | | CreatedTime = DateTime.Now |
| | | }; |
| | | await repTaskInfoUserSubmit.InsertAsync(entity); |
| | | } |
| | | } |
| | | else if (request.Date.HasValue && request.TaskInfoUserId.HasValue) |
| | | { |
| | | q = q.Where(it => it.Date.Date == request.Date.Value.Date && it.TaskInfoUserId == request.TaskInfoUserId.Value); |
| | | q = q.Where(it => |
| | | it.Date.Date == request.Date.Value.Date |
| | | && it.TaskInfoUserId == request.TaskInfoUserId.Value); |
| | | entity = await q.FirstOrDefaultAsync(); |
| | | if (entity == null) |
| | | { |
| | | entity = new TaskInfoUserSubmit |
| | | { |
| | | Id = IDGen.NextID(), |
| | | TaskInfoUserId = request.TaskInfoUserId.Value, |
| | | Date = request.Date.Value.Date, |
| | | CheckReceiveStatus = EnumTaskUserSubmitCheckReceiveStatus.WaitSubmit, |
| | | CreatedTime = DateTime.Now |
| | | }; |
| | | await repTaskInfoUserSubmit.InsertAsync(entity); |
| | | } |
| | | } |
| | | var model = await q.GetDetail<TaskInfoUserSubmit, GetCheckReceiveTaskUserSubmitQueryResult>(); |
| | | if (entity == null) |
| | | { |
| | | throw Oops.Oh(EnumErrorCodeType.s404, "提交信息"); |
| | | } |
| | | |
| | | var model = new GetCheckReceiveTaskUserSubmitQueryResult |
| | | { |
| | | Id = entity.Id, |
| | | Date = entity.Date, |
| | | CreatedTime = entity.CreatedTime, |
| | | }; |
| | | model.TaskInfoUserEnterpriseEmployeeUser = await repUser.AsQueryable().AsNoTracking() |
| | | .Where(it => it.EnterpriseEmployees.Any(ee => ee.TaskInfoUsers.Any(tu => tu.Id == entity.TaskInfoUserId))) |
| | | .ProjectToType<GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser>() |
| | | .FirstOrDefaultAsync(); |
| | | model.Files = await repTaskInfoUserSubmit.Change<TaskInfoUserSubmitFile>().AsQueryable().AsNoTracking() |
| | | .Where(it => it.SubmitId == model.Id) |
| | | .Select(it => it.File) |