From fd1d2c1d5f519ddb4667019d6685ff270ad6716b Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期四, 11 九月 2025 09:49:42 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs |   66 ++++++++++++++++++---------------
 1 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
index a7740a3..086493e 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskCheckReceives/Commands/TaskCheckReceiveCommandHandler.cs
@@ -40,15 +40,20 @@
             var logier = JwtUtils.GetCurrentLogier();
             var task = await repTaskInfo.AsQueryable()
                 .FirstOrDefaultAsync(it => it.Id == request.TaskInfoId, cancellationToken);
-            if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ヤ换鍔�");
-            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 (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "浠诲姟");
+            if (task.Status != EnumTaskStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "浠诲姟鏆傛湭瀹夋帓浜哄憳");
+            if (task.ReleaseStatus != EnumTaskReleaseStatus.InProcess) throw Oops.Oh(EnumErrorCodeType.s510, "浠诲姟宸茬粨鏉�");
+            if (request.Date.Date > now.Date)
+                throw Oops.Oh(EnumErrorCodeType.s510, "浠诲姟鏃堕棿鏈紑濮�");
+            if (task.BeginTime > request.Date.Date)
+                throw Oops.Oh(EnumErrorCodeType.s510, "浠诲姟鏈紑濮�");
+            if (request.Date.Date > 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.HireStatus != EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "鎮ㄦ湭褰曠敤");
-            if (taskUser.ArrangeStatus != EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "鏆傛湭瀹夋帓璇ヤ换鍔�");
+            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "鎶ュ悕淇℃伅");
+            //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;
@@ -61,7 +66,7 @@
                 submit = new TaskInfoUserSubmit
                 {
                     TaskInfoUserId = taskUser.Id,
-                    Date = now.Date,
+                    Date = request.Date,
                     Files = request.Files.Select(it => new TaskInfoUserSubmitFile
                     {
                         File = it
@@ -103,18 +108,16 @@
             var submit = await repTaskInfoUserSubmit.AsQueryable()
                 .Include(it => it.Files)
                 .FirstOrDefaultAsync(it => it.Id == request.Id);
-            if (submit == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ユ彁浜や俊鎭�");
+            if (submit == null) throw Oops.Oh(EnumErrorCodeType.s404, "鎻愪氦淇℃伅");
             var taskUser = await repTaskInfoUser.AsQueryable()
                 .FirstOrDefaultAsync(it => it.Id == submit.TaskInfoUserId, cancellationToken);
-            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "璇ョ伒宸ヤ俊鎭�");
-            if (taskUser.HireStatus != EnumTaskUserHireStatus.Pass) throw Oops.Oh(EnumErrorCodeType.s510, "鏈綍鐢ㄨ鐏靛伐");
-            if (taskUser.ArrangeStatus != EnumTaskUserArrangeStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "鏈畨鎺掕鐏靛伐");
+            if (taskUser == null) throw Oops.Oh(EnumErrorCodeType.s404, "鐏靛伐淇℃伅");
+            //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.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 (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "浠诲姟");
+            if (task.Status != EnumTaskStatus.Complete) throw Oops.Oh(EnumErrorCodeType.s510, "浠诲姟鏆傛湭瀹夋帓浜哄憳");
             if (request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Success
                 && request.CheckReceiveStatus != EnumTaskUserSubmitCheckReceiveStatus.Fail)
                 throw Oops.Oh(EnumErrorCodeType.s400, "璇烽�夋嫨姝g‘鐨勯獙鏀剁姸鎬�");
@@ -136,7 +139,7 @@
                     || it.CheckReceiveStatus == EnumTaskUserSubmitCheckReceiveStatus.Fail))
                 .Select(it => it.Date)
                 .ToListAsync();
-            taskUserSubmitDates.Add(now.Date);
+            taskUserSubmitDates.Add(submit.Date);
             if (dates.All(taskUserSubmitDates.Contains))
             {
                 taskUser.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Completed;
@@ -145,13 +148,16 @@
             var taskUserCheckReceiveStatuses = await repTaskInfoUser.AsQueryable().AsNoTracking()
                 .Where(it =>
                     it.TaskInfoId == task.Id
-                    && it.Id != taskUser.Id)
+                    && it.Id != taskUser.Id
+                    && it.ArrangeStatus == EnumTaskUserArrangeStatus.Complete)
                 .Select(it => it.CheckReceiveStatus)
                 .ToListAsync();
             taskUserCheckReceiveStatuses.Add(EnumTaskCheckReceiveStatus.Completed);
             if (taskUserCheckReceiveStatuses.All(it => it == EnumTaskCheckReceiveStatus.Completed))
             {
                 task.CheckReceiveStatus = EnumTaskCheckReceiveStatus.Completed;
+                task.CheckReceiveTime = DateTime.Now;
+                task.SettlementOrderStatus = EnumTaskSettlementOrderStatus.Wait;
             }
 
             await repTaskInfoUserSubmit.UpdateAsync(submit);
@@ -166,18 +172,18 @@
         /// <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);
+            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);

--
Gitblit v1.9.1