Merge pull request 'staging' (#49) from staging into master
Reviewed-on: #49
This commit is contained in:
commit
36520ab5ec
|
|
@ -65,61 +65,61 @@ namespace Learn.Archives.API.Controllers.Dto
|
|||
/// 语文
|
||||
/// </summary>
|
||||
[ExcelColumnName("语文")]
|
||||
public decimal 语文 { get; set; }
|
||||
public string 语文 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数学
|
||||
/// </summary>
|
||||
[ExcelColumnName("数学")]
|
||||
public decimal 数学 { get; set; }
|
||||
public string 数学 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 英语
|
||||
/// </summary>
|
||||
[ExcelColumnName("英语")]
|
||||
public decimal 英语 { get; set; }
|
||||
public string 英语 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 物理
|
||||
/// </summary>
|
||||
[ExcelColumnName("物理")]
|
||||
public decimal 物理 { get; set; }
|
||||
public string 物理 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 化学
|
||||
/// </summary>
|
||||
[ExcelColumnName("化学")]
|
||||
public decimal 化学 { get; set; }
|
||||
public string 化学 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生物
|
||||
/// </summary>
|
||||
[ExcelColumnName("生物")]
|
||||
public decimal 生物 { get; set; }
|
||||
public string 生物 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 政治
|
||||
/// </summary>
|
||||
[ExcelColumnName("政治")]
|
||||
public decimal 政治 { get; set; }
|
||||
public string 政治 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 历史
|
||||
/// </summary>
|
||||
[ExcelColumnName("历史")]
|
||||
public decimal 历史 { get; set; }
|
||||
public string 历史 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 地理
|
||||
/// </summary>
|
||||
[ExcelColumnName("地理")]
|
||||
public decimal 地理 { get; set; }
|
||||
public string 地理 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 赋分后总分
|
||||
/// </summary>
|
||||
[ExcelColumnName("赋分后总分")]
|
||||
public decimal 赋分后总分 { get; set; }
|
||||
public string 赋分后总分 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 总分资源校排名
|
||||
|
|
|
|||
|
|
@ -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<ImportExamInfo> resultList = new List<ImportExamInfo>() { 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<SubjectEnum, decimal>? ImportExamInfoSubjectDic(ImportExamInfo info)
|
||||
{
|
||||
return new Dictionary<SubjectEnum, decimal>()
|
||||
var c = new Dictionary<SubjectEnum, string>()
|
||||
{
|
||||
{ SubjectEnum.语文, info.语文},
|
||||
{ SubjectEnum.数学, info.数学},
|
||||
|
|
@ -299,6 +308,17 @@ namespace Learn.Archives.API.Controllers
|
|||
{ SubjectEnum.历史, info.历史},
|
||||
{ SubjectEnum.地理, info.地理},
|
||||
};
|
||||
var res = new Dictionary<SubjectEnum, decimal>();
|
||||
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<Classes>()
|
||||
.Where(c => c.SchoolId == school.Id &&
|
||||
c.GradeLevel == exam.GradeLevel &&
|
||||
|
|
|
|||
|
|
@ -261,19 +261,8 @@ namespace Learn.Archives.API.Controllers
|
|||
[HttpLogEnable]
|
||||
public async Task<IActionResult> 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<StudentInfoImportError> dataList;
|
||||
using var stream = new MemoryStream();
|
||||
{
|
||||
await fl.CopyToAsync(stream);
|
||||
dataList = stream.Query<StudentInfoImportError>()
|
||||
.Where(s => !string.IsNullOrEmpty(s.School));
|
||||
}
|
||||
var dataList = await _httpContextAccessor.ParsingExcelAsync<StudentInfoImportError>();
|
||||
dataList = dataList.Where(s => !string.IsNullOrEmpty(s.School)).ToArray();
|
||||
if (dataList == null || dataList.Count() == 0)
|
||||
Oh.ModelError("导入失败:无有效数据");
|
||||
var insertInfo = new List<Student>();
|
||||
|
|
|
|||
|
|
@ -152,8 +152,8 @@ namespace Learn.Archives.API.Expand
|
|||
{
|
||||
//特殊处理:ResultIgnore,不进行返回结果包装,原样输出
|
||||
var endpoint = context.GetEndpoint();
|
||||
// 直接返回原始结果,不封装
|
||||
if (endpoint?.Metadata.GetMetadata<HttpLogEnable>() == null&& e is null) return;
|
||||
// 所有数据不允许删除
|
||||
//if (endpoint?.Metadata.GetMetadata<HttpLogEnable>() == 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")
|
||||
|
|
|
|||
Loading…
Reference in New Issue