sunpengfei
2025-08-14 2b331227c0c169ac60efe25c0de8090c0c52e663
FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
@@ -41,13 +41,14 @@
            var task = await repTaskInfo.AsQueryable()
                .FirstOrDefaultAsync(it => it.Id == request.TaskInfoId, cancellationToken);
            if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "该任务");
            if (task.Status == EnumTaskStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "该任务暂未安排人员");
            if (task.ReleaseStatus == EnumTaskReleaseStatus.Stopped) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (task.Status != EnumTaskStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "该任务暂未安排人员");
            if (task.ReleaseStatus != EnumTaskReleaseStatus.InProcess) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (!(task.BeginTime <= now && now <= task.EndTime)) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            var taskUser = await repTaskInfoUser.AsQueryable()
                .FirstOrDefaultAsync(it => it.TaskInfoId == task.Id && it.EnterpriseEmployee.UserId == logier.Id, cancellationToken);
            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "该报名信息");
            if (taskUser.ArrangeStatus == EnumTaskUserArrangeStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "暂未安排该任务");
            if (taskUser.HireStatus != EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "您未录用");
            if (taskUser.ArrangeStatus != EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "暂未安排该任务");
            task.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitCheckReceive;
            task.LastSubmitTime = now;
            taskUser.CheckReceiveStatus = EnumTaskCheckReceiveStatus.WaitCheckReceive;
@@ -106,12 +107,13 @@
            var taskUser = await repTaskInfoUser.AsQueryable()
                .FirstOrDefaultAsync(it => it.Id == submit.TaskInfoUserId, cancellationToken);
            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "该灵工信息");
            if (taskUser.ArrangeStatus == EnumTaskUserArrangeStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "未安排该灵工");
            if (taskUser.HireStatus != EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "未录用该灵工");
            if (taskUser.ArrangeStatus != EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "未安排该灵工");
            var task = await repTaskInfo.AsQueryable()
                .FirstOrDefaultAsync(it => it.Id == taskUser.TaskInfoId && it.EnterpriseId == logier.EnterpriseId, cancellationToken);
            if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "该任务");
            if (task.Status == EnumTaskStatus.Wait) throw Oops.Oh(EnumErrorCodeType.s510, "该任务暂未安排人员");
            if (task.ReleaseStatus == EnumTaskReleaseStatus.Stopped) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (task.Status != EnumTaskStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "该任务暂未安排人员");
            if (task.ReleaseStatus != EnumTaskReleaseStatus.InProcess) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (!(task.BeginTime <= now && now <= task.EndTime)) throw Oops.Oh(EnumErrorCodeType.s510, "该任务已结束");
            if (request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Success
                && request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Fail)
@@ -168,17 +170,34 @@
                .Where(it => it.TaskInfoUser.TaskInfoId == request.Id)
                .Select(it => new ExportTaskCheckReceiveTaskUsersCommandModel
                {
                    UserId = it.TaskInfoUser.EnterpriseEmployee.UserId!.Value,
                    Name = it.TaskInfoUser.EnterpriseEmployee.User.Name,
                    Identity = it.TaskInfoUser.EnterpriseEmployee.User.Identity,
                    ContactPhoneNumber = it.TaskInfoUser.EnterpriseEmployee.User.ContactPhoneNumber,
                    CheckReceiveStatus = it.CheckReceiveStatus,
                    CheckReceiveTime = it.CheckReceiveTime,
                    Bank = "123",
                    Code = "456"
                })
                .ToListAsync(cancellationToken);
            if (models.IsNotNull())
            {
                var userIds = models.DistinctSelect(it => it.UserId);
                var bankCards = await repTaskInfoUserSubmit.Change<UserBankCard>().AsQueryable().AsNoTracking()
                    .Where(it => userIds.Contains(it.UserId))
                    .Select(it => new
                    {
                        it.UserId,
                        it.Bank,
                        it.Code
                    })
                    .ToListAsync(cancellationToken);
                foreach (var model in models)
                {
                    var bankCard = bankCards.FirstOrDefault(it => it.UserId == model.UserId);
                    model.Bank = bankCard?.Bank;
                    model.Code = bankCard?.Code;
                }
            }
            var url = await models.ExportExcelToOSS("TaskCheckReceive/Export", "验收记录.xlsx");
            url = AliyunOSSUtils.GetUrl(url);
            return url;
        }
    }