renmingwang
2026-03-25 6d56bf4daf08c4c7c6d193d98ed0b547dc473451
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -955,19 +955,42 @@
        /// <returns></returns>
        public WebResponseContent GetRoadwayTaskProgress(string roadway)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var tasks = BaseDal.QueryData(x => x.Roadway == roadway);
                var progressInfo = new
                // 1. å…¥å‚校验
                if (string.IsNullOrWhiteSpace(roadway))
                {
                    roadway = roadway,
                    totalTasks = tasks.Count,
                    inProgressTasks = tasks.Count(t => t.TaskState < (int)TaskStatusEnum.Finish && t.TaskState != (int)TaskStatusEnum.Cancel && t.TaskState != (int)TaskStatusEnum.Exception),
                    completedTasks = tasks.Count(t => t.TaskState == (int)TaskStatusEnum.Finish),
                    cancelledTasks = tasks.Count(t => t.TaskState == (int)TaskStatusEnum.Cancel),
                    exceptionTasks = tasks.Count(t => t.TaskState == (int)TaskStatusEnum.Exception),
                    tasks = tasks.Select(t => new
                    return WebResponseContent.Instance.Error("巷道编号不能为空");
                }
                // 2. ä¸€æ¬¡æŸ¥è¯¢ï¼Œé¿å…å¤šæ¬¡æ•°æ®åº“/内存遍历
                List<Dt_Task> taskList = BaseDal.QueryData(x => x.Roadway == roadway).ToList();
                int totalTasks = taskList.Count;
                int inProgressTasks = 0;
                int completedTasks = 0;
                int cancelledTasks = 0;
                int exceptionTasks = 0;
                foreach (var task in taskList)
                {
                    switch ((TaskStatusEnum)task.TaskState)
                    {
                        case TaskStatusEnum.Finish:
                            completedTasks++;
                            break;
                        case TaskStatusEnum.Cancel:
                            cancelledTasks++;
                            break;
                        case TaskStatusEnum.Exception:
                            exceptionTasks++;
                            break;
                        default:
                            inProgressTasks++;
                            break;
                    }
                }
                var taskDetails = taskList.Select(t => new
                    {
                        taskNum = t.TaskNum,
                        taskType = t.TaskType,
@@ -977,15 +1000,26 @@
                        modifyDate = t.ModifyDate,
                        sourceAddress = t.SourceAddress,
                        targetAddress = t.TargetAddress
                    }).ToList()
                }).ToList();
                // 5. ç»Ÿä¸€è¿”回结果
                var progressInfo = new
                {
                    roadway = roadway,
                    totalTasks,
                    inProgressTasks,
                    completedTasks,
                    cancelledTasks,
                    exceptionTasks,
                    tasks = taskDetails
                };
                content = WebResponseContent.Instance.OK(data: progressInfo);
                return WebResponseContent.Instance.OK(data: progressInfo);
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
                return WebResponseContent.Instance.Error($"获取巷道任务进度失败:{ex.Message}");
            }
            return content;
        }
        /// <summary>
@@ -994,34 +1028,56 @@
        /// <returns></returns>
        public WebResponseContent GetAllRoadwayTaskProgress()
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var allTasks = BaseDal.QueryData();
                var roadways = allTasks.Select(t => t.Roadway).Distinct().ToList();
                var progressList = new List<object>();
                // 1. ä¸€æ¬¡æ€§æŸ¥è¯¢æ‰€æœ‰æ•°æ®ï¼ˆé¿å…å¤šæ¬¡æŸ¥è¯¢ï¼‰
                List<Dt_Task> allTasks = BaseDal.QueryData().ToList();
                foreach (var roadway in roadways)
                // 2. æŒ‰å··é“分组 + ä¸€æ¬¡éåŽ†ç»Ÿè®¡æ‰€æœ‰çŠ¶æ€ï¼ˆæ€§èƒ½æå‡å·¨å¤§ï¼‰
                var progressList = allTasks
                    .GroupBy(t => t.Roadway)
                    .Select(group =>
                {
                    var roadwayTasks = allTasks.Where(t => t.Roadway == roadway).ToList();
                    progressList.Add(new
                        var roadway = group.Key;
                        var tasks = group.ToList();
                        var totalTasks = tasks.Count;
                        int inProgress = 0, completed = 0, cancelled = 0, exception = 0;
                        foreach (var task in tasks)
                        {
                            switch ((TaskStatusEnum)task.TaskState)
                            {
                                case TaskStatusEnum.Finish:
                                    completed++;
                                    break;
                                case TaskStatusEnum.Cancel:
                                    cancelled++;
                                    break;
                                case TaskStatusEnum.Exception:
                                    exception++;
                                    break;
                                default:
                                    inProgress++;
                                    break;
                            }
                        }
                        return new
                    {
                        roadway = roadway,
                        totalTasks = roadwayTasks.Count,
                        inProgressTasks = roadwayTasks.Count(t => t.TaskState < (int)TaskStatusEnum.Finish && t.TaskState != (int)TaskStatusEnum.Cancel && t.TaskState != (int)TaskStatusEnum.Exception),
                        completedTasks = roadwayTasks.Count(t => t.TaskState == (int)TaskStatusEnum.Finish),
                        cancelledTasks = roadwayTasks.Count(t => t.TaskState == (int)TaskStatusEnum.Cancel),
                        exceptionTasks = roadwayTasks.Count(t => t.TaskState == (int)TaskStatusEnum.Exception)
                    });
                }
                content = WebResponseContent.Instance.OK(data: progressList);
                            totalTasks = totalTasks,
                            inProgressTasks = inProgress,
                            completedTasks = completed,
                            cancelledTasks = cancelled,
                            exceptionTasks = exception
                        };
                    })
                    .ToList();
                return WebResponseContent.Instance.OK(data: progressList);
            }
            catch (Exception ex)
            {
                content = WebResponseContent.Instance.Error(ex.Message);
                return WebResponseContent.Instance.Error($"获取巷道任务进度失败:{ex.Message}");
            }
            return content;
        }
        /// <summary>
@@ -1031,7 +1087,6 @@
        /// <returns></returns>
        private string GetTaskStateName(int taskState)
        {
            // ç›´æŽ¥æ ¹æ®çŠ¶æ€å€¼è¿”å›žçŠ¶æ€åç§°
            switch (taskState)
            {
                case (int)TaskStatusEnum.New: