diff --git a/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs b/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs
index a18a342..ef40a07 100644
--- a/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs
+++ b/Learn.Archives.API/Controllers/Dto/ExamClassInfoDto.cs
@@ -65,61 +65,61 @@ namespace Learn.Archives.API.Controllers.Dto
/// 语文
///
[ExcelColumnName("语文")]
- public decimal 语文 { get; set; }
+ public string 语文 { get; set; }
///
/// 数学
///
[ExcelColumnName("数学")]
- public decimal 数学 { get; set; }
+ public string 数学 { get; set; }
///
/// 英语
///
[ExcelColumnName("英语")]
- public decimal 英语 { get; set; }
+ public string 英语 { get; set; }
///
/// 物理
///
[ExcelColumnName("物理")]
- public decimal 物理 { get; set; }
+ public string 物理 { get; set; }
///
/// 化学
///
[ExcelColumnName("化学")]
- public decimal 化学 { get; set; }
+ public string 化学 { get; set; }
///
/// 生物
///
[ExcelColumnName("生物")]
- public decimal 生物 { get; set; }
+ public string 生物 { get; set; }
///
/// 政治
///
[ExcelColumnName("政治")]
- public decimal 政治 { get; set; }
+ public string 政治 { get; set; }
///
/// 历史
///
[ExcelColumnName("历史")]
- public decimal 历史 { get; set; }
+ public string 历史 { get; set; }
///
/// 地理
///
[ExcelColumnName("地理")]
- public decimal 地理 { get; set; }
+ public string 地理 { get; set; }
///
/// 赋分后总分
///
[ExcelColumnName("赋分后总分")]
- public decimal 赋分后总分 { get; set; }
+ public string 赋分后总分 { get; set; }
///
/// 总分资源校排名
diff --git a/Learn.Archives.API/Controllers/ExamClassInfoController.cs b/Learn.Archives.API/Controllers/ExamClassInfoController.cs
index d87d527..e3f022b 100644
--- a/Learn.Archives.API/Controllers/ExamClassInfoController.cs
+++ b/Learn.Archives.API/Controllers/ExamClassInfoController.cs
@@ -116,6 +116,12 @@ namespace Learn.Archives.API.Controllers
}
var grade = GradeHelper.GetStudentGradeBaseByGrade(s.Grade);
var sub = ImportExamInfoSubjectDic(s);
+ if(sub is null)
+ {
+ s.Error = "遇到了无法处理成绩值! 请检查本行的成绩";
+ errorExcelInfo.Add(s);
+ return null;
+ }
var name = s.Class + s.Student;
if (!userDic.ContainsKey(name))
{
@@ -130,6 +136,9 @@ namespace Learn.Archives.API.Controllers
errorExcelInfo.Add(s);
return null;
}
+ var assignScore = decimal.TryParse(s.赋分后总分.Trim(), out decimal ass)
+ ? ass
+ : 0m;
return new ExamUserInfo()
{
ExamId = exam.Id,
@@ -143,7 +152,7 @@ namespace Learn.Archives.API.Controllers
SchoolId = classInfo.SchoolId,
Type = exam.Type,
SubjectDic = sub,
- AssignScore = s.赋分后总分,
+ AssignScore = assignScore,
AssignRanking = s.资源校排名,
};
}).ToList();
@@ -172,20 +181,20 @@ namespace Learn.Archives.API.Controllers
{
List resultList = new List() { new ImportExamInfo()
{
- School="例子学校[导入时候请删除]",
+ School="例子学校[导入时候请删除本行]",
Class="测试班级",
Grade="高2028",
Student="学生姓名",
- 语文=80.5m,
- 化学=80.5m,
- 数学=80m,
- 历史 = 80m,
- 地理 = 80m,
- 政治 = 80m,
- 物理 = 80m,
- 生物 = 80m,
- 英语 = 80.5m,
- 赋分后总分=721.5m
+ 语文 = "得分 例: 80.5",
+ 化学 = "得分 例: 80.5",
+ 数学 = "得分 例: 80.5",
+ 历史 = "得分 例: 80.5",
+ 地理 = "得分 例: 80.5",
+ 政治 = "得分 例: 80.5",
+ 物理 = "得分 例: 80.5",
+ 生物 = "得分 例: 80.5",
+ 英语 = "得分 例: 80.5",
+ 赋分后总分="赋分后总分",
} };
return File(resultList.ExportExcel(), "application/ms-excel",
$"导入成绩模板{DateTime.Now.ToString("MMddHHmm")}.xlsx");
@@ -287,7 +296,7 @@ namespace Learn.Archives.API.Controllers
[NonAction]
private Dictionary? ImportExamInfoSubjectDic(ImportExamInfo info)
{
- return new Dictionary()
+ var c = new Dictionary()
{
{ SubjectEnum.语文, info.语文},
{ SubjectEnum.数学, info.数学},
@@ -299,6 +308,17 @@ namespace Learn.Archives.API.Controllers
{ SubjectEnum.历史, info.历史},
{ SubjectEnum.地理, info.地理},
};
+ var res = new Dictionary();
+ foreach (var item in c)
+ {
+ if (string.IsNullOrWhiteSpace(item.Value))
+ res.Add(item.Key, 0m);
+ else if (decimal.TryParse(item.Value.Trim(), out decimal r))
+ res.Add(item.Key, r);
+ else
+ return null;
+ }
+ return res;
}
[NonAction]
private static decimal? SubjectScore(ExamUserInfo info, SubjectEnum? s)
@@ -336,8 +356,9 @@ namespace Learn.Archives.API.Controllers
var db = sService.Context;
foreach (var schoolArr in userInfoArr.GroupBy(s => s.SchoolId))
{
-
var school = await sService.GetFirstAsync(s => s.Id == schoolArr.Key);
+ if(school is null)
+ continue;
var classArr = await db.Queryable()
.Where(c => c.SchoolId == school.Id &&
c.GradeLevel == exam.GradeLevel &&
diff --git a/Learn.Archives.API/Controllers/StudentController.cs b/Learn.Archives.API/Controllers/StudentController.cs
index 0ed1d5a..616ffb8 100644
--- a/Learn.Archives.API/Controllers/StudentController.cs
+++ b/Learn.Archives.API/Controllers/StudentController.cs
@@ -261,19 +261,8 @@ namespace Learn.Archives.API.Controllers
[HttpLogEnable]
public async Task Import(IFormFile? file)
{
-
- var fl = file != null ? file : _httpContextAccessor.HttpContext?.Request.Form.Files[0];
- if (fl == null) Oh.ModelError("传入无效的数据");
- if (!Path.GetExtension(fl.FileName).Equals(".xlsx", StringComparison.OrdinalIgnoreCase))
- Oh.ModelError("请选择导入文件为.xlsx的后缀名!");
- //分析excel
- IEnumerable dataList;
- using var stream = new MemoryStream();
- {
- await fl.CopyToAsync(stream);
- dataList = stream.Query()
- .Where(s => !string.IsNullOrEmpty(s.School));
- }
+ var dataList = await _httpContextAccessor.ParsingExcelAsync();
+ dataList = dataList.Where(s => !string.IsNullOrEmpty(s.School)).ToArray();
if (dataList == null || dataList.Count() == 0)
Oh.ModelError("导入失败:无有效数据");
var insertInfo = new List();
diff --git a/Learn.Archives.API/Expand/HttpFilter.cs b/Learn.Archives.API/Expand/HttpFilter.cs
index 585faa4..4e0687d 100644
--- a/Learn.Archives.API/Expand/HttpFilter.cs
+++ b/Learn.Archives.API/Expand/HttpFilter.cs
@@ -152,8 +152,8 @@ namespace Learn.Archives.API.Expand
{
//特殊处理:ResultIgnore,不进行返回结果包装,原样输出
var endpoint = context.GetEndpoint();
- // 直接返回原始结果,不封装
- if (endpoint?.Metadata.GetMetadata() == null&& e is null) return;
+ // 所有数据不允许删除
+ //if (endpoint?.Metadata.GetMetadata() == null&& e is null) return;
string request = null;
var logId = Yitter.IdGenerator.YitIdHelper.NextId();
@@ -204,7 +204,7 @@ namespace Learn.Archives.API.Expand
Url = context.Request.Path + context.Request.QueryString,
Method = context.Request.Method,
Request = request,
- IP = $"{userInfo.Scope} {context.Connection?.RemoteIpAddress?.ToString()}",
+ IP = $"{userInfo.Scope} {userInfo.Name} {context.Connection?.RemoteIpAddress?.ToString()}",
ResponseCode = result?.Code ?? -1,
Response = (result != null ? JsonSerializer.Serialize(result) : null) ,
Authorization = context.Request.Headers.ContainsKey("Authorization")