| | |
| | | /// <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> |
| | |
| | | /// <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> |
| | |
| | | /// <returns></returns> |
| | | private string GetTaskStateName(int taskState) |
| | | { |
| | | // ç´æ¥æ ¹æ®ç¶æå¼è¿åç¶æåç§° |
| | | switch (taskState) |
| | | { |
| | | case (int)TaskStatusEnum.New: |