Przeglądaj źródła

移动端商邀任务完善

yuanrf 20 godzin temu
rodzic
commit
0237dde33a

+ 96 - 0
OASystem/OASystem.Api/Controllers/TaskController.cs

@@ -138,6 +138,102 @@ namespace OASystem.API.Controllers
             return Ok(jw);
         }
 
+        /// <summary>
+        /// 根据工单ID获取任务详情
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> GetTaskListByTaskId(GetTaskListByTaskIdDto dto)
+        {
+            var jw = JsonView(false);
+
+            if (dto.WorkOrderId < 1 || dto.UserId < 1)
+            {
+                jw.Msg = "参数有误!";
+                return Ok(jw);
+            }
+
+            // 查询工单基本信息
+            var query = _sqlsugar.Queryable<Task_WorkOrder>()
+                     .LeftJoin<Grp_DelegationInfo>((x, y) => x.GroupId == y.Id && y.IsDel == 0)
+                     .LeftJoin<Sys_SetData>((x, y, z) => x.ForeignOptionId == z.Id && z.IsDel == 0)
+                     .LeftJoin<Sys_Users>((x, y, z, w) => x.AssignedUserId == w.Id && w.IsDel == 0)
+                     .Where(x => x.Id == dto.WorkOrderId && x.IsDel == 0);
+
+            var workOrderInfo = query.Select((x, y, z, w) => new
+            {
+                Id = x.Id,
+                TaskName = x.Name,
+                StartTime = x.StartTime.ToString("yyyy-MM-dd HH:mm"),
+                Assignee = w.CnName,
+                ExternalOption = z.Name,
+                Team = y.TeamName,
+                Active = x.ProgressId,
+                CreateUserid = x.CreateUserId
+            }).First();
+
+            if (workOrderInfo == null)
+            {
+                jw.Msg = "工单不存在或已删除!";
+                return Ok(jw);
+            }
+
+            // 查询工单的所有任务
+            var taskArr = _sqlsugar.Queryable<Task_WorkTask>()
+                                    .Where(y => y.IsDel == 0 && y.WorkOrderId == workOrderInfo.Id)
+                                    .ToList();
+
+            // 分离额外任务
+            var ExtraStep = taskArr.Where(x => x.IsExtraTask == true);
+
+            // 查询已审核通过的额外任务回执
+            var historyStep = _sqlsugar.Queryable<Task_WorkTaskReceipt>()
+                                    .Where(y => y.IsDel == 0 && y.WorkOrderId == workOrderInfo.Id
+                                    && ExtraStep.Select(z => z.Id).Contains(y.WorkTaskId)
+                                    && y.IsApproved == 1)
+                                    .Select(x => x.WorkTaskId)
+                                    .ToList();
+
+            // 构建返回数据
+            var data = new WorkOrdeView
+            {
+                Id = workOrderInfo.Id,
+                TaskName = workOrderInfo.TaskName,
+                StartTime = workOrderInfo.StartTime,
+                Assignee = workOrderInfo.Assignee,
+                ExternalOption = workOrderInfo.ExternalOption,
+                Team = string.IsNullOrWhiteSpace(workOrderInfo.Team) ? "未选择" : workOrderInfo.Team,
+                StepInfo = new StepInfo
+                {
+                    Active = workOrderInfo.Active,
+                    ExtraActive = 1,
+                    Steps = taskArr.Where(x => x.IsExtraTask == false)
+                    .OrderBy(x => x.Sort)
+                    .Select(x => new Steps
+                    {
+                        Id = x.Id,
+                        Name = x.Name,
+                    }).ToList(),
+                    ExtraStep = ExtraStep
+                    .OrderBy(x => x.Sort)
+                    .Select(x => new ExtraSteps
+                    {
+                        Id = x.Id,
+                        Name = x.Name,
+                        Approved = historyStep.Contains(x.Id) ? 1 : 0,
+                    }).ToList()
+                },
+                isReview = workOrderInfo.CreateUserid == dto.UserId,
+                UrgentCount = taskArr.Where(x => x.IsUrgent).Count()
+            };
+
+            jw.Data = data;
+            jw.Msg = "查询成功!";
+            jw.Code = 200;
+            return Ok(jw);
+        }
+
         /// <summary>
         /// 计算两个时间之间的工作小时数
         /// 工作时间:周一至周五,上午9:00-12:00,下午13:30-18:00

+ 16 - 0
OASystem/OASystem.Domain/Dtos/Task/GetTaskDefaultDto.cs

@@ -305,4 +305,20 @@ namespace OASystem.Domain.Dtos.Task
         // 驳回原因(驳回时必填)
         public string? RejectReason { get; set; }
     }
+
+    /// <summary>
+    /// 根据工单ID获取任务详情DTO
+    /// </summary>
+    public class GetTaskListByTaskIdDto
+    {
+        /// <summary>
+        /// 工单ID
+        /// </summary>
+        public int WorkOrderId { get; set; }
+
+        /// <summary>
+        /// 用户ID(用于判断是否为创建人)
+        /// </summary>
+        public int UserId { get; set; }
+    }
 }