Browse Source

增强任务状态处理和审核逻辑

在 `PersonnelModuleController.cs` 中,添加了对任务接收者状态的处理逻辑,根据当前用户是否为任务创建者设置任务状态或任务详细信息。

在 `TaskAllocationRepository.cs` 中,修改了任务审核的逻辑,初始化 `taskAudits` 为一个空列表,并根据条件查询任务审核信息,设置任务操作审核的标志。

同时,调整了任务状态的检查条件,从 `TaskerEnum.UnderWay` 改为 `TaskerEnum.UnderWay` 及以上,以允许在待审核状态下进行某些操作。
LEIYI 1 month ago
parent
commit
d1ecff61c9

+ 12 - 2
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1151,7 +1151,18 @@ WHERE
             var taskerData = _taskAllocationRep._sqlSugar.SqlQueryable<TaskerDetailsView>(taskerSql).Where(it => taskIds.Contains(it.TAId)).ToList();
             foreach (var item in _view)
             {
-                item.TaskerDetails = taskerData.Where(it => it.TAId == item.Id).ToList();
+                //任务接收者显示自己任务状态
+                if (!item.CreateUserName.Equals(currUserName))
+                {
+                    var subTaskInfo = taskerData.FirstOrDefault(x => item.Id == x.TAId && x.UserId == dto.UserId);
+                    if (subTaskInfo != null) item.Status = subTaskInfo.TaskStatus;
+                }
+                else
+                {
+                    item.TaskerDetails = taskerData.Where(it => it.TAId == item.Id).ToList();
+                }
+
+
 
                 ////处理任务总状态 And 任务人状态
                 //var taskerStatusData = taskerData.Where(it => it.TAId == item.Id && it.TaskCreateUserId != dto.UserId && it.UserId == dto.UserId).FirstOrDefault();
@@ -1431,7 +1442,6 @@ WHERE
             return Ok(JsonView(false, _view.Msg));
         }
 
-
         /// <summary>
         /// 任务分配
         /// 任务发布者 单人设置未完成状态

+ 22 - 10
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/TaskAllocationRepository.cs

@@ -80,28 +80,42 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 List<ValueInfo> _GroupNameInfos = new List<ValueInfo>();
                 _GroupNameInfos = _sqlSugar.Queryable<Grp_DelegationInfo>()
                     .Where(it => it.IsDel == 0)
-                    .OrderByDescending(it => it.CreateTime)
+                    .OrderByDescending(it => it.VisitStartDate)
                     .Select(it => new ValueInfo { Id = it.Id, Name = it.TeamName })
                     .ToList();
                 _GroupNameInfos.Insert(0, new ValueInfo() { Id = -1, Name = "未选择" });
                 //部门名称
                 ValueInfo _DepartmentNameInfos = new ValueInfo();
                 _DepartmentNameInfos = _sqlSugar.Queryable<Sys_Users, Sys_Department>((u, d) => new JoinQueryInfos(JoinType.Left, u.DepId == d.Id))
+                    .Where((u, d) => u.Id == userId)
                     .Select((u, d) => new ValueInfo() { Id = d.Id, Name = d.DepName })
                     .First();
 
                 //执行任务人员信息 1 公司总经理/副总 可分配 所有人的任务 2 公司 部门经理/主管 可分配 部门下的人员的任务
                 List<ExecuteTaskUserInfo> _ExecuteTaskUserInfos = new List<ExecuteTaskUserInfo>();
                 TaskOperationAudit _TaskOpertionAudit = new TaskOperationAudit();
-
-                var taskAudits = _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && it.PrimaryUserId == userId).ToList();
+                var taskAudits = new List<Pm_TaskJobRelevancy>();
+                taskAudits = _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && it.PrimaryUserId == userId).ToList();
+                var taslPerm = taskAudits.Any();
+                if (!taskAudits.Any())
+                {
+                    var taskUserIds = _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && it.SubUserId == userId).Select(x => x.PrimaryUserId).ToList();
+                    if (taskUserIds.Any())
+                    {
+                        taskAudits = _sqlSugar.Queryable<Pm_TaskJobRelevancy>().Where(it => it.IsDel == 0 && taskUserIds.Contains(it.PrimaryUserId)).ToList();
+                    }
+                }
 
                 if (taskAudits.Any())
                 {
                     //任务权限
-                    _TaskOpertionAudit.TaskAddAudit = 1;
-                    _TaskOpertionAudit.TaskDelAudit = 1;
-                    _TaskOpertionAudit.TasStopAudit = 1;
+                    if (taslPerm)
+                    {
+
+                        _TaskOpertionAudit.TaskAddAudit = 1;
+                        _TaskOpertionAudit.TaskDelAudit = 1;
+                        _TaskOpertionAudit.TasStopAudit = 1;
+                    }
 
                     List<int> userIds = taskAudits.Select(it => it.SubUserId).ToList();
                     string userSql = string.Format(@"Select u.Id,u.CnName As Name,c.CompanyName,
@@ -396,9 +410,6 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                     _result.Msg = string.Format("请传入有效的Id参数!");
                     return _result;
                 }
-
-
-
             }
             else
             {
@@ -552,7 +563,8 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 _result.Msg = string.Format("该任务不在!");
                 return _result;
             }
-            if (selectData.TaskStatus != TaskerEnum.UnderWay)
+            
+            if (selectData.TaskStatus >= TaskerEnum.UnderWay)
             {
                 _result.Msg = string.Format("该任务已提交待审核状态,不可重复提交!");
                 return _result;