Forráskód Böngészése

Merge branch 'develop' of http://163.228.141.122:3000/TEAMMODEL/TEAMModelOS into develop

XW 2 hónapja
szülő
commit
7bbff7126c

+ 21 - 13
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/ManageController.cs

@@ -319,7 +319,7 @@ namespace IES.ExamServer.Controllers
                             }
                            
                             await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 1, status = Constant._Message_status_info, content = $"下载前清理资源" });
+                                new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 1, finish=1,status = Constant._Message_status_info, content = $"下载前清理资源" });
                             string evaluationData = string.Empty;
                             {
                                 //evaluation
@@ -333,13 +333,13 @@ namespace IES.ExamServer.Controllers
                                     await System.IO.File.WriteAllTextAsync(path_evaluation, content);
                                     successMsgs.Add("评测信息文件evaluation.json文件下载成功!");
                                     await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                    new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 2, status = Constant._Message_status_success, content = $"评测信息文件evaluation.json文件下载成功!" });
+                                    new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 2, finish = 1, status = Constant._Message_status_success, content = $"评测信息文件evaluation.json文件下载成功!" });
                                 }
                                 else
                                 {
                                     errorMsgs.Add("评测信息文件evaluation.json文件下载失败!");
                                     await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                    new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 2, status = Constant._Message_status_error, content = $"评测信息文件evaluation.json文件下载失败!" }, true);
+                                    new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 2, finish = 1, status = Constant._Message_status_error, content = $"评测信息文件evaluation.json文件下载失败!" }, true);
                                 }
 
 
@@ -377,14 +377,14 @@ namespace IES.ExamServer.Controllers
                                     await System.IO.File.WriteAllTextAsync(path_groupList, content);
                                     successMsgs.Add("评测名单grouplist.json文件下载成功!");
                                     await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                   new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 3, status = Constant._Message_status_success, content = $"评测名单grouplist.json文件下载成功!" });
+                                   new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 3, finish = 1, status = Constant._Message_status_success, content = $"评测名单grouplist.json文件下载成功!" });
 
                                 }
                                 else
                                 {
                                     errorMsgs.Add("评测名单grouplist.json文件下载失败!");
                                     await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                   new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 3, status = Constant._Message_status_error, content = $"评测名单grouplist.json文件下载失败!" }, true);
+                                   new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 3, finish = 1, status = Constant._Message_status_error, content = $"评测名单grouplist.json文件下载失败!" }, true);
 
                                 }
                             }
@@ -410,12 +410,15 @@ namespace IES.ExamServer.Controllers
                                         await Parallel.ForEachAsync(evaluationPaper.blobs, parallelOptions, async (blob, cancellationToken) =>
                                         {
                                             currCount++;
+                                            double size = Math.Round(blob.size * 1.0 / 1024 / 1024, 2);
+                                            string? fileName = Path.GetFileName(blob.path);
                                             try
                                             {
                                                 // 下载 Blob 文件到本地
                                                 //httpClient.Timeout = TimeSpan.FromSeconds(300);
+                                              
                                                 HttpResponseMessage blobMessage = await httpClient.GetAsync($"{url}/{cnt}/{blob.path}?{sas}", cancellationToken);
-                                               
+                                                
                                                 if (blobMessage.IsSuccessStatusCode)
                                                 {
                                                     byte[] bytes = await blobMessage.Content.ReadAsByteArrayAsync(cancellationToken);
@@ -429,20 +432,20 @@ namespace IES.ExamServer.Controllers
                                                         }
                                                         else
                                                         {
-                                                            string? fileName = Path.GetFileName(blob.path);
+                                                           
                                                             await System.IO.File.WriteAllBytesAsync(Path.Combine(path_paper, fileName!), bytes, cancellationToken);
                                                         }
                                                     }
 
                                                     await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_success, content = $"[进度:{currCount}/{blobCount}][大小:{blob.size * 1.0 / 1024 / 1024}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载成功。" });
+                                new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_success, content = $"[进度:{currCount}/{blobCount}][大小:{size}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{fileName}文件下载成功。" });
                                                 }
                                                 else
                                                 {
                                                     string? error = await blobMessage.Content.ReadAsStringAsync(cancellationToken);
                                                     errorMsgs.Add($"{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载失败,{blobMessage.StatusCode},{error}");
                                                     await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                 new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{blob.size * 1.0 / 1024 / 1024}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载失败,{blobMessage.StatusCode},{error}" }, true);
+                                 new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{size}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{fileName}文件下载失败,{blobMessage.StatusCode},{error}" }, true);
 
                                                     // Console.WriteLine($"Error downloading {blob.path},{blobMessage.StatusCode},{error}");
                                                 }
@@ -451,7 +454,7 @@ namespace IES.ExamServer.Controllers
                                             {
                                                 errorMsgs.Add($"{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载错误,{ex.Message}");
                                                 await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                 new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{blob.size * 1.0 / 1024 / 1024}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{blob.path}文件下载错误,{ex.Message}" }, true);
+                                 new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, status = Constant._Message_status_error, content = $"[进度:{currCount}/{blobCount}][大小:{size}kb]{evaluationExam.subjectName},{evaluationPaper.paperName},{fileName}文件下载错误,{ex.Message}" }, true);
 
                                                 // 处理异常
                                                 //Console.WriteLine($"Error downloading {blob.path}: {ex.Message}");
@@ -462,8 +465,13 @@ namespace IES.ExamServer.Controllers
                             }
 
                             _liteDBFactory.GetLiteDatabase().GetCollection<EvaluationClient>().Upsert(dataInfo.evaluationCloud!);
+                            await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
+                                 new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 4, finish = 1, status = Constant._Message_status_info, content = $"评测试卷下载完成" });
 
                             (successMsgs, errorMsgs) = await ManageService.CheckFile(dataInfo.evaluationCloud!, successMsgs, errorMsgs, _signalRExamServerHub, _memoryCache, _logger, deviceId, evaluationPath, Constant._Message_grant_type_download_file,step:5);
+                            
+                            await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
+                                    new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 5, finish = 1, status = Constant._Message_status_info, content = $"评测完整性验证完成" });
                             await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
                                    new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 6, status = Constant._Message_status_info, content = $"正在创建压缩包,请稍等..." });
 
@@ -479,13 +487,13 @@ namespace IES.ExamServer.Controllers
                             {
                                 successMsgs.Add("评测数据压缩包创建成功!");
                                 await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                   new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 6, status = Constant._Message_status_success, content = $"评测数据压缩包创建成功!" });
+                                   new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 6, finish = 1, status = Constant._Message_status_success, content = $"评测数据压缩包创建成功!" });
                             }
                             else
                             {
                                 errorMsgs.Add("评测数据压缩包创建失败!");
                                 await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                  new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 6, status = Constant._Message_status_error, content = $"评测数据压缩包创建失败!" }, true);
+                                  new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 6, finish = 1, status = Constant._Message_status_error, content = $"评测数据压缩包创建失败!" }, true);
 
                             }
                         }
@@ -493,7 +501,7 @@ namespace IES.ExamServer.Controllers
                             string content = $"云端数据检测结果:{dataInfo.centerMsg},状态:{dataInfo.centerCode}";
                             errorMsgs.Add(content);
                             await _signalRExamServerHub.SendMessage(_memoryCache, _logger, deviceId, Constant._Message_grant_type_download_file,
-                                new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 1, status = Constant._Message_status_error, content = content }, true);
+                                new MessageContent { dataId = evaluationClient.id, dataName = evaluationClient.name, messageType = Constant._Message_type_message, step = 1, finish = 1, status = Constant._Message_status_error, content = content }, true);
                         }
                     }
                     else

+ 2 - 1
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/DI/SignalRHost/SignalRExamServerHub.cs

@@ -33,7 +33,8 @@ namespace IES.ExamServer.DI.SignalRHost
                     time = DateTimeOffset.Now.ToUnixTimeMilliseconds(),
                     type = Constant._Message_type_message,
                     contents = content.contents,
-                    step=content.step
+                    step=content.step,
+                    finish = content.finish
                 };
                 if (signalRClient != null)
                 {

+ 8 - 1
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Models/SignalRClient.cs

@@ -67,7 +67,10 @@
         /// 步骤
         /// </summary>
         public int step { get; set; }
-
+        /// <summary>
+        /// 当前步骤是否结束
+        /// </summary>
+        public int finish { get; set; }
     }
     public class MessageContent
     {
@@ -103,6 +106,10 @@
         /// 步骤
         /// </summary>
         public int step { get; set; }
+        /// <summary>
+        /// 0 未完成,1完成
+        /// </summary>
+        public int finish { get; set; }
     }
  
     public class SignalRClient