leiy 1 рік тому
батько
коміт
e5b1658e0c

+ 90 - 0
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1074,6 +1074,22 @@ namespace OASystem.API.Controllers
                 RefAsync<int> total = 0;//REF和OUT不支持异步,想要真的异步这是最优解
                 var _view = await _taskAllocationRep._sqlSugar.SqlQueryable<TaskListView>(pageSql).ToPageListAsync(_dto.PageIndex, _dto.PageSize, total);//ToPageAsync
 
+                List<int> taskIds = new List<int>();
+                taskIds = _view.Select(it => it.Id).ToList();
+
+                string taskerSql = string.Format(@"Select tau.TAId,tau.Id,u.CnName As UserName,tau.BeginTime,tau.OverTime,tau.TaskStatus,
+												  tau.Cause,tau.Score,tau.Remark As ScoreRemark,tau.CreateUserId As TaskCreateUserId
+												  From Pm_TaskRelevanceUser tau 
+												  Left Join Sys_Users u On tau.UserId = u.Id
+												  Where tau.IsDel = 0");
+
+                var taskerData = await _taskAllocationRep._sqlSugar.SqlQueryable<TaskerDetailsView>(taskerSql).Where(it => taskIds.Contains(it.TAId)).ToListAsync();
+                foreach (var item in _view)
+                {
+                    item.TaskerDetails = taskerData.Where(it => it.TAId == item.Id).ToList();
+                }
+
+
                 return Ok(JsonView(true, "查询成功!", _view, total));
             }
             catch (Exception ex)
@@ -1171,6 +1187,80 @@ namespace OASystem.API.Controllers
             }
         }
 
+        /// <summary>
+        /// 任务分配
+        /// 状态任务归属人详情
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostTaskAllocationTaskerDetails(TaskerDetailsDto _dto)
+        {
+            try
+            {
+                var _view = await _taskAllocationRep._TaskerDetails( _dto.Id);
+                if (_view.Code == 0)
+                {
+                    return Ok(JsonView(true, "操作成功!", _view.Data));
+                }
+
+                return Ok(JsonView(false, _view.Msg));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 任务分配
+        /// 状态任务归属人设置开始状态
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostTaskAllocationSetStartStatus(TaskerStatusDto _dto)
+        {
+            try
+            {
+                var _view = await _taskAllocationRep._TaskerSetStartStatus(_dto.UserId, _dto.Id);
+                if (_view.Code == 0)
+                {
+                    return Ok(JsonView(true, "操作成功!"));
+                }
+
+                return Ok(JsonView(false, _view.Msg));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
+
+        /// <summary>
+        /// 任务分配
+        /// 状态任务归属人设置完成状态
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> PostTaskAllocationSetOverStatus(TaskerStatusDto _dto)
+        {
+            try
+            {
+                var _view = await _taskAllocationRep._TaskerSetOverStatus(_dto.UserId, _dto.Id);
+                if (_view.Code == 0)
+                {
+                    return Ok(JsonView(true, "操作成功!"));
+                }
+
+                return Ok(JsonView(false, _view.Msg));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
+        }
 
         /// <summary>
         /// 任务分配

+ 3 - 13
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/TaskAssignment.cs

@@ -37,13 +37,13 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                                                       .Queryable<Pm_TaskRelevanceUser>()
                                                       .Where(it => it.IsDel == 0 &&
                                                                    primaryIds.Contains(it.TAId) &&
-                                                                   it.TaskStatus <= (int)TaskEnum.UnderWay
+                                                                   it.TaskStatus <= TaskerEnum.UnderWay
                                                             )
                                                       .ToListAsync();
                 foreach (var item in subData)
                 {
-                    item.OverTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm-ss");
-                    item.TaskStatus = (int)TaskEnum.UnFinished;
+                    item.OverTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+                    item.TaskStatus = TaskerEnum.UnFinished;
                     item.Cause = string.Format(@"任务没有提交完成或者超时,由系统设置任务未完成");
                 }
                 if (subData.Count > 0)
@@ -56,15 +56,5 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
                 }
             }
         }
-
-
-        /// <summary>
-        /// 任务消息推送
-        /// 每天下午2点定时推送
-        /// </summary>
-        public static async void PostTaskNewsFeed()
-        {
-            
-        }
     }
 }

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

@@ -118,6 +118,31 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         public int IsIntoPerformance { get; set; } = 0;
     }
 
+    //
+
+    /// <summary>
+    /// 任务分配 
+    /// 任务归属人 状态操作
+    /// </summary>
+    public class TaskerDetailsDto
+    {
+        public int Id { get; set; }
+
+    }
+
+    /// <summary>
+    /// 任务分配 
+    /// 任务归属人 状态操作
+    /// </summary>
+    public class TaskerStatusDto
+    {
+
+        public int UserId { get; set; }
+
+        public int Id { get; set; }
+
+    }
+
     /// <summary>
     /// 任务分配 
     /// 任务确认完成 
@@ -164,5 +189,7 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         public int Id { get; set; }
 
         public int Score { get; set; }
+
+        public string ScoreRemark { get; set; }
     }
 }

+ 3 - 2
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_TaskAllocation.cs

@@ -1,4 +1,5 @@
-using System;
+using OASystem.Domain.Enums;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -61,7 +62,7 @@ namespace OASystem.Domain.Entities.PersonnelModule
         /// 0 未开始 1 进行中 2 待审核 3 未完成 4 已完成
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int Status { get; set; } = 0;
+        public TaskEnum Status { get; set; } = 0;
 
         /// <summary>
         ///  0 否 1 是  

+ 1 - 1
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_TaskRelevanceUser.cs

@@ -45,7 +45,7 @@ namespace OASystem.Domain.Entities.PersonnelModule
         /// -1 未开始 0 已知晓 1 进行中 2 待审核 3 未完成  4 已完成 5任务中止
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "int")]
-        public int TaskStatus { get; set; } = (int)TaskEnum.NotStarted;
+        public TaskerEnum TaskStatus { get; set; } 
 
         /// <summary>
         /// 未完成原因

+ 34 - 0
OASystem/OASystem.Domain/Enums/TaskEnum.cs

@@ -10,6 +10,38 @@ namespace OASystem.Domain.Enums
     /// 任务指派状态
     /// </summary>
     public enum TaskEnum : int
+    {
+        /// <summary>
+        /// 任务指派状态
+        /// 未开始
+        /// </summary>
+        NotStarted = 0,
+        /// <summary>
+        /// 任务指派状态
+        /// 进行中
+        /// </summary>
+        UnderWay = 1,
+        /// <summary>
+        /// 任务指派状态
+        /// 待审核
+        /// </summary>
+        WaitConfirm = 2,
+        /// <summary>
+        /// 任务指派状态
+        /// 未完成
+        /// </summary>
+        UnFinished = 3,
+        /// <summary>
+        /// 任务指派状态
+        /// 已完成
+        /// </summary>
+        Finished = 4
+    }
+
+    /// <summary>
+    /// 任务者状态
+    /// </summary>
+    public enum TaskerEnum : int
     {
         /// <summary>
         /// 任务指派状态
@@ -47,4 +79,6 @@ namespace OASystem.Domain.Enums
         /// </summary>
         TaskStop = 5
     }
+
+    
 }

+ 45 - 1
OASystem/OASystem.Domain/ViewModels/PersonnelModule/TaskAllocationView.cs

@@ -1,4 +1,5 @@
 using OASystem.Domain.Entities.PersonnelModule;
+using OASystem.Domain.Enums;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -176,6 +177,8 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// 任务完成者
         /// </summary>
         public string? Consummator { get; set; }
+
+        public List<TaskerDetailsView>? TaskerDetails { get; set; }
     }
 
     /// <summary>
@@ -241,6 +244,47 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         public string Remark { get; set; }
     }
 
+
+    /// <summary>
+    /// 任务者-详情
+    /// </summary>
+    public class TaskerDetailsView
+    {
+        public int TAId { get; set; }
+        public int TaskCreateUserId { get; set; }
+        public int Id { get; set; }
+
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 实际开始时间
+        /// </summary>
+        public string BeginTime { get; set; }
+
+        public string OverTime { get; set; }
+
+        /// <summary>
+        /// -1 未开始 0 已知晓 1 进行中 2 待审核 3 未完成  4 已完成 5任务中止
+        /// </summary>
+        public int TaskStatus { get; set; }
+
+        /// <summary>
+        /// 未完成原因
+        /// </summary>
+        public string Cause { get; set; }
+
+        /// <summary>
+        /// 评分
+        /// </summary>
+        public int Score { get; set; }
+
+        /// <summary>
+        /// 评分备注
+        /// </summary>
+        public string ScoreRemark { get; set; }
+    }
+
+
     /// <summary>
     /// 任务参与人
     /// </summary>
@@ -266,7 +310,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// <summary>
         /// 任务状态
         /// </summary>
-        public int TaskStatus { get; set; }
+        public TaskerEnum TaskStatus { get; set; }
 
         /// <summary>
         /// 未完成原因

+ 165 - 7
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/TaskAllocationRepository.cs

@@ -69,9 +69,11 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
 
                 //任务名称
                 List<string> _TaskNameInfos = new List<string>();
-                _TaskNameInfos = _sqlSugar.Queryable<Pm_TaskAllocation, Pm_TaskRelevanceUser>((ta, tau) => new JoinQueryInfos(JoinType.Left, ta.Id == tau.Id))
+                _TaskNameInfos = _sqlSugar.Queryable<Pm_TaskAllocation, Pm_TaskRelevanceUser>((ta, tau) => new JoinQueryInfos(JoinType.Left, ta.Id == tau.TAId))
+                                          .Where((ta, tau) => ta.IsDel == 0 && tau.IsDel == 0)
                                           .Where((ta, tau) => ta.CreateUserId == userId || tau.UserId == userId)
-                                          .Select(ta => ta.TaskName).ToList();
+                                          .Select(ta => ta.TaskName).ToList()
+                                          .Distinct().ToList();
 
                 //团组名称
                 List<ValueInfo> _GroupNameInfos = new List<ValueInfo>();
@@ -381,7 +383,6 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                     /*
                      * 发送消息
                      */
-
                     _result.Code = 0;
                     _result.Msg = "编辑成功!";
                     _sqlSugar.CommitTran();
@@ -402,6 +403,162 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             return _result;
         }
 
+        /// <summary>
+        /// 任务归属人状态 Items
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskerDetails(int id)
+        {
+            if (id < 1)
+            {
+                _result.Msg = string.Format("请传入有效的Id参数!");
+                return _result;
+            }
+
+            string sql = string.Format(@"Select tau.Id,u.CnName As UserName,tau.BeginTime,tau.OverTime,tau.TaskStatus,
+												 tau.Cause,tau.Score,tau.Remark As ScoreRemark,tau.CreateUserId As TaskCreateUserId
+												 From Pm_TaskRelevanceUser tau 
+												 Left Join Sys_Users u On tau.UserId = u.Id
+												 Where tau.IsDel = 0 And  tau.TAId = {0}", id);
+
+            var data = await _sqlSugar.SqlQueryable<TaskerDetailsView>(sql).ToListAsync();
+
+            _result.Data = data;
+            _result.Msg = string.Format("操作成功!");
+            _result.Code = 0;
+
+            return _result;
+        }
+
+
+        /// <summary>
+        /// 任务归属人状态
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskerStatus(int id)
+        {
+            if (id < 1)
+            {
+                _result.Msg = string.Format("请传入有效的Id参数!");
+                return _result;
+            }
+
+            var data1 = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>().Where(it => it.IsDel == 0 && it.Id == id).FirstAsync();
+            if (data1 == null)
+            {
+                _result.Msg = string.Format("该任务不存在!");
+                return _result;
+            }
+            var data2 = await _sqlSugar.Queryable<Pm_TaskAllocation>().Where(it => it.IsDel == 0 && it.Id == data1.TAId).FirstAsync();
+
+            _sqlSugar.BeginTran();
+
+            var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                                         .SetColumns(it => it.TaskStatus == TaskerEnum.HaveKnown)
+                                         .ExecuteCommandAsync();
+            if (update1 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                return _result;
+            }
+            _result.Msg = string.Format("操作成功!");
+            _result.Code = 0;
+            _sqlSugar.CommitTran();
+
+
+            return _result;
+        }
+
+        /// <summary>
+        /// 任务归属人设置开始状态
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskerSetStartStatus(int userId, int id)
+        {
+            if (id < 1)
+            {
+                _result.Msg = string.Format("请传入有效的Id参数!");
+                return _result;
+            }
+
+            _sqlSugar.BeginTran();
+            var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                                         .SetColumns(it => it.TaskStatus == TaskerEnum.UnderWay)
+                                         .Where(it => it.TAId == id)
+                                         .Where(it => it.UserId == userId )
+                                         .ExecuteCommandAsync();
+            if (update1 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            var update2 = await _sqlSugar.Updateable<Pm_TaskAllocation>()
+                                        .SetColumns(it => it.Status == TaskEnum.UnderWay)
+                                        .Where(it => it.Id == id)
+                                        .ExecuteCommandAsync();
+            if (update2 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+
+            _sqlSugar.CommitTran();
+            _result.Msg = string.Format("操作成功!");
+            _result.Code = 0;
+
+            return _result;
+        }
+
+
+        /// <summary>
+        /// 任务归属人设置完成状态
+        /// 1.待审核
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        public async Task<Result> _TaskerSetOverStatus(int userId, int id)
+        {
+            if (id < 1)
+            {
+                _result.Msg = string.Format("请传入有效的Id参数!");
+                return _result;
+            }
+
+            _sqlSugar.BeginTran();
+            var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
+                                         .SetColumns(it => it.TaskStatus == TaskerEnum.WaitConfirm)
+                                         .Where(it => it.TAId == id)
+                                         .Where(it => it.UserId == userId)
+                                         .ExecuteCommandAsync();
+            if (update1 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+            var update2 = await _sqlSugar.Updateable<Pm_TaskAllocation>()
+                                        .SetColumns(it => it.Status == TaskEnum.WaitConfirm)
+                                        .Where(it => it.Id == id)
+                                        .ExecuteCommandAsync();
+            if (update2 < 1)
+            {
+                _result.Msg = string.Format("操作失败!");
+                _sqlSugar.RollbackTran();
+                return _result;
+            }
+
+            _sqlSugar.CommitTran();
+            _result.Msg = string.Format("操作成功!");
+            _result.Code = 0;
+
+            return _result;
+        }
+
         /// <summary>
         /// 设置任务知晓
         /// </summary>
@@ -426,7 +583,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
             _sqlSugar.BeginTran();
 
             var update1 = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>()
-                                         .SetColumns(it => it.TaskStatus == (int)TaskEnum.HaveKnown)
+                                         .SetColumns(it => it.TaskStatus == TaskerEnum.HaveKnown)
                                          .ExecuteCommandAsync();
             if (update1 < 1)
             {
@@ -457,7 +614,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 }
 
                 var data = await _sqlSugar.Queryable<Pm_TaskRelevanceUser>()
-                                          .Where(it => it.IsDel == 0 && it.Id == id && it.TaskStatus <= (int)TaskEnum.UnFinished)
+                                          .Where(it => it.IsDel == 0 && it.Id == id && it.TaskStatus <= TaskerEnum.UnFinished)
                                           .ToListAsync();
                 if (data.Count > 0)
                 {
@@ -468,7 +625,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
 
                 var update = await _sqlSugar.Updateable<Pm_TaskAllocation>()
                                             .SetColumns(it => it.IsComplete == 1)
-                                            .SetColumns(it => it.Status == 4)
+                                            .SetColumns(it => it.Status == TaskEnum.Finished)
                                             .Where(it => it.Id == id)
                                             .ExecuteCommandAsync();
                 if (update > 0)
@@ -524,11 +681,12 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                     {
                         Id = item.Id,
                         Score = item.Score,
+                        Remark = item.ScoreRemark
                     });
                 }
 
                 var update = await _sqlSugar.Updateable<Pm_TaskRelevanceUser>(_TaskRelevanceUsers)
-                                            .UpdateColumns(it => it.Score)
+                                            .UpdateColumns(it => new { it.Score, it.Remark })
                                             .WhereColumns(it => it.Id)
                                             .ExecuteCommandAsync();
                 if (update > 0)