From 44c1e4ac1f3fe8d82a90b3c124b457cbb17ea1dc Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Thu, 20 Jun 2024 17:29:37 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E5=90=88=E5=89=8D=E7=AB=AF=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E9=A2=98=E5=BA=93=E5=AF=BC=E5=85=A5excel=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Base/BaseController.cs | 4 +- .../files/ExcelTemplate/Ghre_Question.xlsx | Bin 40770 -> 41156 bytes Tiobon.Core.Common/Helper/NPOIHelper.cs | 2 +- Tiobon.Core.Services/CommonServices.cs | 4 +- .../Ghre/Ghre_QuestionServices.cs | 95 +++++++++++++++--- 5 files changed, 84 insertions(+), 21 deletions(-) diff --git a/Tiobon.Core.Api/Controllers/Base/BaseController.cs b/Tiobon.Core.Api/Controllers/Base/BaseController.cs index 68e37b81..85726353 100644 --- a/Tiobon.Core.Api/Controllers/Base/BaseController.cs +++ b/Tiobon.Core.Api/Controllers/Base/BaseController.cs @@ -223,9 +223,9 @@ public class BaseController> ImportExcel(IFormFile file) + public async Task> ImportExcel(IFormFile file) { - var data = (await InvokeServiceAsync("ImportExcel", [file])) as ServiceResult; + var data = (await InvokeServiceAsync("ImportExcel", [file])) as ServiceResult; return data; } #endregion diff --git a/Tiobon.Core.Api/wwwroot/files/ExcelTemplate/Ghre_Question.xlsx b/Tiobon.Core.Api/wwwroot/files/ExcelTemplate/Ghre_Question.xlsx index b13f1d763fd93706f5e4d45823d286ea7f4d8ebe..91b61562466225368a0f2ab898a14005b642af31 100644 GIT binary patch delta 15874 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 L{_>RgPbdEme4HwI delta 15518 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⪙9vBsQ>ACX(EAJIphR?hnG)- kgHHpL|6~9f10>8903(YB>gNiB83BQrxnxitNq^b=FO`}r>;M1& diff --git a/Tiobon.Core.Common/Helper/NPOIHelper.cs b/Tiobon.Core.Common/Helper/NPOIHelper.cs index 7993eac4..4301bb1f 100644 --- a/Tiobon.Core.Common/Helper/NPOIHelper.cs +++ b/Tiobon.Core.Common/Helper/NPOIHelper.cs @@ -285,7 +285,7 @@ public class NPOIHelper for (int i = (sheet.FirstRowNum + 1); i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); - if (row.GetCell(row.FirstCellNum) != null && row.GetCell(row.FirstCellNum).ToString().Length > 0) + //if (row.GetCell(row.FirstCellNum) != null && row.GetCell(row.FirstCellNum).ToString().Length > 0) //if (row.GetCell(row.FirstCellNum) != null) { DataRow dataRow = dt.NewRow(); diff --git a/Tiobon.Core.Services/CommonServices.cs b/Tiobon.Core.Services/CommonServices.cs index 3798b30c..d35f2a04 100644 --- a/Tiobon.Core.Services/CommonServices.cs +++ b/Tiobon.Core.Services/CommonServices.cs @@ -851,8 +851,8 @@ public partial class CommonServices : BaseServices>, ICommon result.DT_Procedure.IUDProcedure = dt.Rows[0]["IUDProcedure"].ToString(); if (!string.IsNullOrWhiteSpace(result.DT_Procedure.EditProcedure)) { - result.DT_Procedure.ImportExcel = result.DT_Procedure.EditProcedure.Replace("QueryForm", "ImportExcel"); - result.DT_Procedure.DownloadExcel = result.DT_Procedure.EditProcedure.Replace("QueryForm", "DownloadExcel"); + result.DT_Procedure.ImportExcel = "/api" + result.DT_Procedure.EditProcedure.Replace("QueryForm", "ImportExcel"); + result.DT_Procedure.DownloadExcel = "/api" + result.DT_Procedure.EditProcedure.Replace("QueryForm", "DownloadExcel"); } } diff --git a/Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs b/Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs index 89babff2..46cad571 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_QuestionServices.cs @@ -804,8 +804,8 @@ public class Ghre_QuestionServices : BaseServices { @@ -830,10 +830,11 @@ public class Ghre_QuestionServices : BaseServices + for (int jj = 0; jj < types.Count; jj++) { + var x = types[jj]; + string questionType = ConvertQuestionType1(x); DataTable dt = NPOIHelper.ImportExcel(filepath, x); if (dt.Columns["Comments"] == null) @@ -844,7 +845,10 @@ public class Ghre_QuestionServices : BaseServices(); var courseName = dt.Rows[i]["课程(必填)"].ToString(); var questionContent = dt.Rows[i]["题目内容(必填)"].ToString(); - var correctAnswer = dt.Rows[i]["正确答案(必填)"].ToString(); + var correctAnswer = string.Empty; + if (questionType != "Completion" && questionType != "ShortAnswer") + correctAnswer = dt.Rows[i]["正确答案(必填)"].ToString(); + var questionAnalysis = dt.Rows[i]["解析"].ToString(); var difficultyLevel = dt.Rows[i]["难度"].ToString() ?? "普通"; if (string.IsNullOrEmpty(questionContent)) @@ -856,20 +860,24 @@ public class Ghre_QuestionServices : BaseServices x.CourseName == courseName); - if (course is null) - comments.Add("课程不存在,请修正!"); + Ghre_CourseDto course = null; + if (!string.IsNullOrEmpty(courseName)) + { + course = await _ghre_CourseServices.QuerySingleDto(x => x.CourseName == courseName); + if (course is null) + comments.Add("课程不存在,请修正!"); + } var insert = new InsertGhre_QuestionInput() { - CourseId = course.Id, + CourseId = course?.Id, QuestionNo = await GenerateContinuousSequence(questionType.Substring(0, 1)), DifficultyLevel = ConvertDifficultyLevel1(difficultyLevel), QuestionType = questionType, @@ -940,6 +948,63 @@ public class Ghre_QuestionServices : BaseServices -1) + { + if (questionContent.Length > index + 2) + { + if (questionContent.Substring(index + 2, 2) == "()") + questionContent = questionContent.Substring(0, index) + "____、" + questionContent.Substring(index + 2); + } + else + questionContent = questionContent.Substring(0, index) + "____" + questionContent.Substring(index + 2); + + insertAnswers.Add(new InsertGhre_QuestionAnswerInput() + { + TaxisNo = ii * 100, + QuestionNo = answer, + //QuestionId = id, + AnswerContent = answer, + IsCorrect = true + }); + } + } + } + + if (completionCount != insertAnswers.Count) + comments.Add("题目内容填空个数与答案个数不匹配!"); + else + insert.QuestionContent = questionContent; + } + else if (questionType == "ShortAnswer") + { + for (int ii = 1; ii < 11; ii++) + { + var answer = dt.Rows[i]["关键词" + ii].ToString(); + if (!string.IsNullOrWhiteSpace(answer)) + { + insertAnswers.Add(new InsertGhre_QuestionAnswerInput() + { + TaxisNo = ii * 100, + QuestionNo = answer, + //QuestionId = id, + AnswerContent = answer, + IsCorrect = true + }); + } + } + } if (comments.Any()) { data.ErrorCount++; @@ -950,7 +1015,7 @@ public class Ghre_QuestionServices : BaseServices x.QuestionId = id); await _ghre_QuestionAnswerServices.Add(insertAnswers); } @@ -958,6 +1023,7 @@ public class Ghre_QuestionServices : BaseServices.OprateFailed("导入文件存在错误,请下载后查看!", data); - else - return ServiceResult.OprateSuccess("导入成功!"); + return ServiceResult.OprateSuccess("导入成功!", data); } #endregion } \ No newline at end of file