From 458837c9c2e5653063b193dc3ac754d76ebfa683 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 14 八月 2025 15:51:32 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 53 insertions(+), 7 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
index aae3fb4..a7740a3 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
@@ -20,7 +20,8 @@
             IRepository<TaskInfoUserSubmit> repTaskInfoUserSubmit
         ) :
         IRequestHandler<SubmitCheckReceiveTaskCommand, Guid>,
-        IRequestHandler<CheckReceiveTaskCommand, Guid>
+        IRequestHandler<CheckReceiveTaskCommand, Guid>,
+        IRequestHandler<ExportTaskCheckReceiveTaskUsersCommand, string>
     {
         private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo;
         private readonly IRepository<TaskInfoUser> repTaskInfoUser = repTaskInfoUser;
@@ -40,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;
@@ -105,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)
@@ -154,5 +157,48 @@
             await repTaskInfoUserSubmit.UpdateAsync(submit);
             return submit.Id;
         }
+
+        /// <summary>
+        /// 瀵煎嚭楠屾敹璁板綍
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<string> Handle(ExportTaskCheckReceiveTaskUsersCommand request, CancellationToken cancellationToken)
+        {
+           var models = await repTaskInfoUserSubmit.AsQueryable().AsNoTracking()
+                .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,
+                })
+                .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");
+            return url;
+        }
     }
 }

--
Gitblit v1.9.1