From 6d56bf4daf08c4c7c6d193d98ed0b547dc473451 Mon Sep 17 00:00:00 2001
From: renmingwang <renmingwang@hnkhzn.com>
Date: 星期三, 25 三月 2026 16:59:14 +0800
Subject: [PATCH] 添加历史任务删除,大屏布局修改

---
 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs |  137 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 96 insertions(+), 41 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 4e3383f..cb22d8e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -955,37 +955,71 @@
         /// <returns></returns>
         public WebResponseContent GetRoadwayTaskProgress(string roadway)
         {
-            WebResponseContent content = new WebResponseContent();
             try
             {
-                var tasks = BaseDal.QueryData(x => x.Roadway == roadway);
+                // 1. 鍏ュ弬鏍¢獙
+                if (string.IsNullOrWhiteSpace(roadway))
+                {
+                    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,
+                    taskState = t.TaskState,
+                    taskStateName = GetTaskStateName(t.TaskState),
+                    createDate = t.CreateDate,
+                    modifyDate = t.ModifyDate,
+                    sourceAddress = t.SourceAddress,
+                    targetAddress = t.TargetAddress
+                }).ToList();
+
+                // 5. 缁熶竴杩斿洖缁撴灉
                 var progressInfo = new
                 {
                     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
-                    {
-                        taskNum = t.TaskNum,
-                        taskType = t.TaskType,
-                        taskState = t.TaskState,
-                        taskStateName = GetTaskStateName(t.TaskState),
-                        createDate = t.CreateDate,
-                        modifyDate = t.ModifyDate,
-                        sourceAddress = t.SourceAddress,
-                        targetAddress = t.TargetAddress
-                    }).ToList()
+                    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)
-                {
-                    var roadwayTasks = allTasks.Where(t => t.Roadway == roadway).ToList();
-                    progressList.Add(new
+                // 2. 鎸夊贩閬撳垎缁� + 涓�娆¢亶鍘嗙粺璁℃墍鏈夌姸鎬侊紙鎬ц兘鎻愬崌宸ㄥぇ锛�
+                var progressList = allTasks
+                    .GroupBy(t => t.Roadway)
+                    .Select(group =>
                     {
-                        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)
-                    });
-                }
+                        var roadway = group.Key;
+                        var tasks = group.ToList();
+                        var totalTasks = tasks.Count;
+                        int inProgress = 0, completed = 0, cancelled = 0, exception = 0;
 
-                content = WebResponseContent.Instance.OK(data: progressList);
+                        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 = 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:

--
Gitblit v1.9.3