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

---
 FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs |   50 ++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 44 insertions(+), 6 deletions(-)

diff --git a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
index 18796b0..2cdd47e 100644
--- a/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
+++ b/FlexJobApi.FlexJobServer.Application/TaskUsers/Queries/TaskUserQueryHandler.cs
@@ -11,6 +11,7 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using TaskInfo = FlexJobApi.Core.TaskInfo;
 
 namespace FlexJobApi.FlexJobServer.Application
 {
@@ -18,13 +19,16 @@
     /// 浠诲姟浜哄憳鏌ヨ澶勭悊鍣�
     /// </summary>
     public class TaskUserQueryHandler(
-        IRepository<TaskInfoUser> rep) :
+            IRepository<TaskInfoUser> rep,
+            IRepository<TaskInfo> repTaskInfo
+        ) :
         IRequestHandler<GetTaskUsersQuery, GetTaskUsersQueryResult>,
         IRequestHandler<GetArrangeTaskUsersQuery, GetArrangeTaskUsersQueryResult>,
         IRequestHandler<GetTaskUserHireStatusQuery, GetTaskUserHireStatusQueryResult>,
         IRequestHandler<GetSettlementTaskUsersQuery, GetSettlementTaskUsersQueryResult>
     {
         private readonly IRepository<TaskInfoUser> rep = rep;
+        private readonly IRepository<TaskInfo> repTaskInfo = repTaskInfo;
 
         /// <summary>
         /// B绔煡璇㈠簲鑱樻姤鍚嶅垎椤靛垪琛ㄤ俊鎭�
@@ -169,6 +173,11 @@
         {
             var logier = JwtUtils.GetCurrentLogier();
             var list = new GetSettlementTaskUsersQueryResult();
+
+            list.Detail = await TaskInfoRepository.GetQueryable(repTaskInfo, true, logier)
+                .Where(it => it.Id == request.TaskInfoId)
+                .GetDetail<TaskInfo, GetSettlementTaskQueryResult>();
+
             var q = rep.AsQueryable().AsNoTracking()
                 .Where(it => it.TaskInfoId == request.TaskInfoId);
             list.Data = q
@@ -184,7 +193,8 @@
                     ReceiveAccount = it.ReceiveAccount,
                     SettlementAmount = it.SettlementAmount,
                     ActualSettlementAmount = it.ActualSettlementAmount,
-                    SettlementTime = it.SettlementTime
+                    SettlementTime = it.SettlementTime,
+                    SettlementStatus = it.SettlementStatus,
                 })
                 .ToList();
 
@@ -261,6 +271,10 @@
                         item.Bank = model.Bank;
                         item.BankBranch = model.BankBranch;
                     }
+                    if (model.TaskName != list.Detail.Name)
+                    {
+                        errors.Add("浠诲姟鍚嶇О涓嶄竴鑷�");
+                    }
 
                     if (errors.IsNotNull())
                     {
@@ -273,11 +287,35 @@
                         successList.Add(model);
                     }
                 }
-            }
 
-            list.Data = list.Data
-                .Where(it => successList.Any(s => s.Identity == it.Identity))
-                .ToList();
+                if (list.Errors.IsNotNull())
+                {
+                    list.Data = new List<GetSettlementTaskUsersQueryResultItem>();
+                }
+                else
+                {
+                    list.Data = list.Data
+                        .Where(it => successList.Any(s => s.Identity == it.Identity))
+                        .ToList();
+                }
+
+                list.Detail.SettlementOrderStatus = EnumTaskSettlementOrderStatus.Wait;
+                list.Detail.SettlementOrderName = request.SettlementOrderUrl.Substring(request.SettlementOrderUrl.LastIndexOf("/") + 1);
+                list.Detail.SettlementOrderTime = DateTime.Now;
+                list.Detail.SettlementStatus = EnumTaskSettlementStatus.Wait;
+                list.Detail.SettlementAmount = list.Data.Sum(it => it.SettlementAmount ?? 0);
+                list.Detail.ActualSettlementAmount = list.Data.Sum(it => it.ActualSettlementAmount ?? 0);
+            }
+            else
+            {
+                var task = await repTaskInfo.AsQueryable().AsNoTracking()
+                    .Where(it => it.Id == request.TaskInfoId)
+                    .FirstOrDefaultAsync();
+                if (task == null) throw Oops.Oh(EnumErrorCodeType.s404, "浠诲姟");
+                list.Data = list.Data
+                    .Where(it => it.SettlementStatus == task.SettlementStatus)
+                    .ToList();
+            }
 
             return list;
         }

--
Gitblit v1.9.1