Browse Source

优化查询逻辑和任务处理

在 `GroupsController.cs` 中调整了 `Select` 语句,增加了对 `IsNull` 和 `IsView` 属性的条件判断,以确保返回值的准确性。

在 `PersonnelModuleController.cs` 中注释掉了原有的 SQL 查询字符串构造,并更新了消息内容格式,增加了任务名称以提高可读性。

在 `TaskAllocationRepository.cs` 中增加了任务信息的查询和状态检查,确保在执行任务终止操作之前,任务存在且未完成,避免了不必要的错误处理。
LEIYI 2 months ago
parent
commit
c858ee7c4f

+ 4 - 3
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -9219,11 +9219,12 @@ FROM
                 .WhereIF(!string.IsNullOrEmpty(dto.GroupName) && diId > 0, x => x.Id == diId)
                 .WhereIF(!string.IsNullOrEmpty(dto.GroupName) && !status, x => x.TeamName.Contains(dto.GroupName))
                 .OrderByDescending(x => x.VisitStartDate)
-                .Select(x => new EnterExitCostMobileGroupView() {
+                .Select(x => new EnterExitCostMobileGroupView()
+                {
                     Id = x.Id,
                     GroupName = x.TeamName,
-                    IsNull = SqlFunc.Subqueryable<Grp_EnterExitCost>().Where(x1 => x1.DiId == x.Id && x1.IsDel == 0 ).Any(),
-                    IsView = SqlFunc.Subqueryable<Grp_EnterExitCostPermission>().Where(x1 => x1.GroupId == x.Id && x1.UserId == dto.CurrUserId).Any()
+                    IsNull = SqlFunc.Subqueryable<Grp_EnterExitCost>().Where(x1 => x1.DiId == x.Id && x1.IsDel == 0).Any() ? false : true,
+                    IsView = SqlFunc.Subqueryable<Grp_EnterExitCostPermission>().Where(x1 => x1.GroupId == x.Id && x1.UserId == dto.CurrUserId).Any() ? false : true,
                 })
                 .ToPageListAsync(dto.PageIndex, dto.PageSize, total);
 

+ 3 - 3
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1051,11 +1051,11 @@ namespace OASystem.API.Controllers
             if (dto.Type == 0) whereSql = "";
             else if (dto.Type == 1) //1 由我指派
             {
-                whereSql = string.Format(@" And ta.CreateUserId = {0} Or (Select COUNT(1) As PeopleNumber From Pm_TaskRelevanceUser Where IsDel = 0 And ta.Id = TAId And UserId = {0}) > 0", dto.UserId);
+                //whereSql = string.Format(@" And ta.CreateUserId = {0} Or (Select COUNT(1) As PeopleNumber From Pm_TaskRelevanceUser Where IsDel = 0 And ta.Id = TAId And UserId = {0}) > 0", dto.UserId);
             }
             else if (dto.Type == 2)// 2 指派给我
             {
-                whereSql = string.Format(@" And (Select COUNT(1) As PeopleNumber From Pm_TaskRelevanceUser Where IsDel = 0 And ta.Id = TAId And UserId = {0}) > 0", dto.UserId);
+                //whereSql = string.Format(@" And (Select COUNT(1) As PeopleNumber From Pm_TaskRelevanceUser Where IsDel = 0 And ta.Id = TAId And UserId = {0}) > 0", dto.UserId);
             }
             //状态 -1 全部 0 未开始 1 进行中 2 待审核 3 未完成 4 已完成
             if (dto.Status == -1) //全部
@@ -1674,7 +1674,7 @@ WHERE
 
                     string title = $"[{taskData.TaskName}] 进度更新!";
                     string content = $"任务已终止!若需查看,请前往任务页面查看详情!";
-                    string yw_content = $"任务已终止!";
+                    string yw_content = $"[{taskData.TaskName}]任务已终止!";
                     await GeneralMethod.MessageIssueAndNotification(MessageTypeEnum.TaskProgressUpdate, title, content, taskUserIds); //设置任务人 发送消息
 
                     await AppNoticeLibrary.SendUserMsg_Task_ToUser(taskUserIds.Select(x => x.ToString()).ToList(), taskData.DiId, yw_content, taskData.CreateUserId);

+ 15 - 0
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/TaskAllocationRepository.cs

@@ -888,6 +888,21 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 _result.Msg = string.Format("请传入有效的taskId参数!");
                 return _result;
             }
+
+            var taskInfo = _sqlSugar.Queryable<Pm_TaskAllocation>().First(x => x.IsDel == 0 && x.Id == taskId);
+            if (taskInfo == null)
+            {
+                _result.Msg = "该任务不存在,不可执行终止!";
+                return _result;
+            }
+
+            if (taskInfo.Status == TaskEnum.Finished)
+            {
+                _result.Msg = "该任务已完成,不可执行终止!";
+                return _result;
+            }
+
+
             _sqlSugar.BeginTran();
             var taskUpdate = _sqlSugar.Updateable<Pm_TaskAllocation>()
                                       .SetColumns(it => it.Status == TaskEnum.TaskStop)