瀏覽代碼

设置已知晓权限

Lyyyi 1 天之前
父節點
當前提交
999da4c73b

+ 7 - 5
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1173,9 +1173,11 @@ WHERE
                 (bool editPerm, string msg1) = _taskAllocationRep.EditPerm(item.Id, dto.UserId);
                 item.EditPerm = editPerm;
                 //设置任务终止权限
-                (bool taskStopPerm, string msg2) = _taskAllocationRep.TaskStopPerm(item.Id, dto.UserId);
-                item.TaskStopPerm = editPerm;
-
+                (bool stopPerm, string msg2) = _taskAllocationRep.TaskStopPerm(item.Id, dto.UserId);
+                item.TaskStopPerm = stopPerm;
+                //设置已知晓权限
+                (bool havePerm, string msg3) = _taskAllocationRep.TaskHavePerm(item.Id, dto.UserId);
+                item.TaskHavePerm = havePerm;
             }
 
             return Ok(JsonView(true, "查询成功!", _view, total));
@@ -1284,9 +1286,9 @@ WHERE
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<IActionResult> PostTaskAllocationSetHaveStatus(TaskAllocationStatusDto dto)
+        public async Task<IActionResult> PostTaskAllocationSetHaveStatus(TaskAllocationSetHaveStatusDto dto)
         {
-            var _view = await _taskAllocationRep.TaskSetHaveStatus(dto.SubId, dto.UserId);
+            var _view = await _taskAllocationRep.TaskSetHaveStatus(dto.Id, dto.UserId);
             if (_view.Code == 0)
             {
                 //发送消息

+ 12 - 0
OASystem/OASystem.Domain/Dtos/PersonnelModule/TaskAllocationDto.cs

@@ -177,6 +177,18 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// </summary>
         public int SubId { get; set; }
     }
+    //
+    /// <summary>
+    /// 任务分配 
+    /// 任务状态更改
+    /// </summary>
+    public class TaskAllocationSetHaveStatusDto : UserPageFuncDtoBase
+    {
+        /// <summary>
+        /// Id
+        /// </summary>
+        public int Id { get; set; }
+    }
 
     /// <summary>
     /// 任务发布者 单人设置审批状态

+ 41 - 12
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/TaskAllocationRepository.cs

@@ -325,6 +325,42 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             return (true, string.Empty);
         }
 
+        /// <summary>
+        /// 任务终止权限验证
+        /// </summary>
+        public (bool CanEdit, string Message) TaskHavePerm(int taskId, int currentUserId)
+        {
+            var taskInfo = _sqlSugar.Queryable<Pm_TaskAllocation>().First(x => x.Id == taskId && x.IsDel == 0);
+
+            if (taskInfo == null)
+                return (false, "任务不存在!");
+
+            var taskerInfo = _sqlSugar.Queryable<Pm_TaskRelevanceUser>().First(x => x.TAId == taskId && x.UserId == currentUserId && x.IsDel == 0);
+            if (taskerInfo == null)
+                return (false, "任务指派单不存在!");
+
+            if (taskerInfo.UserId != currentUserId)
+                return (false, "只有任务归属者可设置“已知晓”状态!");
+
+            // 检查当前状态是否设置已知晓
+            if (taskerInfo.TaskStatus == TaskerEnum.HaveKnown)
+            {
+                return (false, "当前状态已设置,无需重复操作!");
+            }
+
+            if (taskInfo.Status == TaskEnum.UnFinished)
+            {
+                return (false, "当前状态 “未完成”,不可设置该状态!");
+            }
+            if (taskInfo.Status == TaskEnum.Finished)
+            {
+                return (false, "当前状态 “已完成”,不可设置该状态!");
+            }
+
+            return (true, string.Empty);
+        }
+
+
         /// <summary>
         /// 安全解析字符串为 DateTime?
         /// </summary>
@@ -732,24 +768,17 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 return _result;
             }
 
-            var taskUserInfo = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.TAId == id && it.UserId == userId).FirstAsync();
-            if (taskUserInfo == null)
-            {
-                _result.Msg = string.Format("该任务不存在!");
-                return _result;
-            }
-            var taskerId = taskUserInfo.Id;
-
-            //状态确认
-            if (taskUserInfo.TaskStatus == TaskerEnum.HaveKnown)
+            //状态校验
+            (bool havePerm, string msg3) = TaskHavePerm(id, userId);
+            if (!havePerm)
             {
-                _result.Msg = string.Format("已设置“已知晓”状态,不可重复设置!");
+                _result.Msg = msg3;
                 return _result;
             }
 
             var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
                 .SetColumns(it => it.TaskStatus == TaskerEnum.HaveKnown)
-                .Where(it => it.Id == taskerId && it.UserId == userId)
+                .Where(it => it.TAId == id && it.UserId == userId)
                 .ExecuteCommandAsync();
             if (update1 < 1)
             {