dev #9

Merged
hy merged 11 commits from dev into master 2025-08-26 20:11:08 +08:00
4 changed files with 44 additions and 20 deletions
Showing only changes of commit b28931ce0f - Show all commits

View File

@ -79,7 +79,6 @@ namespace Learn.Archives.API.Controllers
if (dataList == null || dataList.Count() == 0) if (dataList == null || dataList.Count() == 0)
Oh.ModelError("导入失败:无有效数据"); Oh.ModelError("导入失败:无有效数据");
//todo
//处理数据 //处理数据
var errorExcelInfo = new List<ImportExamInfoError>(); var errorExcelInfo = new List<ImportExamInfoError>();
var insertUserInfo = new List<ExamUserInfo>(); var insertUserInfo = new List<ExamUserInfo>();
@ -97,6 +96,8 @@ namespace Learn.Archives.API.Controllers
if (school == null) Oh.ModelError($"导入失败:学校 [{schoolArr.Key}] 未找到!"); if (school == null) Oh.ModelError($"导入失败:学校 [{schoolArr.Key}] 未找到!");
var gradeInfo = GradeHelper.GetStudentGradeBaseByGrade(schoolArr.First().Grade); var gradeInfo = GradeHelper.GetStudentGradeBaseByGrade(schoolArr.First().Grade);
if (gradeInfo == null) Oh.ModelError($"导入失败:学校 [{schoolArr.Key}] 年级[{schoolArr.First().Grade}]不符合规范!"); if (gradeInfo == null) Oh.ModelError($"导入失败:学校 [{schoolArr.Key}] 年级[{schoolArr.First().Grade}]不符合规范!");
if(exam.Level != GradeHelper.GetGrade(gradeInfo.GradeLevel,gradeInfo.GradeYear).ToEnum<GradeEnum>())
Oh.ModelError($"导入失败:导入年级[{schoolArr.First().Grade}] 与 考试年级不匹配!");
//学校下的所属班级 //学校下的所属班级
var classArr = await db.Queryable<Classes>().Where(c => c.SchoolId == school.Id && var classArr = await db.Queryable<Classes>().Where(c => c.SchoolId == school.Id &&
c.GradeLevel == gradeInfo.GradeLevel && c.GradeLevel == gradeInfo.GradeLevel &&

View File

@ -1,4 +1,5 @@
using Aliyun.OSS; using Aliyun.OSS;
using Dm;
using Learn.Archives.API.Controllers.Dto; using Learn.Archives.API.Controllers.Dto;
using Learn.Archives.API.Expand; using Learn.Archives.API.Expand;
using Learn.Archives.Core.Common; using Learn.Archives.Core.Common;
@ -138,9 +139,19 @@ namespace Learn.Archives.API.Controllers
if (dataList == null || dataList.Count() == 0) if (dataList == null || dataList.Count() == 0)
Oh.ModelError("导入失败:无有效数据"); Oh.ModelError("导入失败:无有效数据");
var insertInfo = new List<Student>(); var insertInfo = new List<Student>();
var impError = new List<TeacherInfoImportError>();
var userCenterImp = new List<UserExcelExportData>(); var userCenterImp = new List<UserExcelExportData>();
foreach (var s in dataList) foreach (var s in dataList)
{ {
var ginfo = GradeHelper.GetStudentGradeBaseByGrade(s.Grade);
var gStr = GradeHelper.GetGrade(ginfo.GradeLevel, ginfo.GradeYear);
if (gStr.ToEnum<GradeEnum>() == null) //无效的传入年级
{
s.ErrorMsg = "无效的年级 例如[初一/初2028] [年级范围应当是当前有效的就读年级]";
impError.Add(s);
continue;
}
userCenterImp.Add(new UserExcelExportData() userCenterImp.Add(new UserExcelExportData()
{ {
UserType = s.UserType, UserType = s.UserType,
@ -148,7 +159,7 @@ namespace Learn.Archives.API.Controllers
Subject = s.Subject, Subject = s.Subject,
ExamNo = s.ExamNo, ExamNo = s.ExamNo,
School = s.School, School = s.School,
Grade = s.Grade, Grade = gStr,
Class = s.Class, Class = s.Class,
ClassType = s.ClassType, ClassType = s.ClassType,
Phone = s.Phone, Phone = s.Phone,
@ -157,6 +168,9 @@ namespace Learn.Archives.API.Controllers
}); });
} }
//如果有错误数据则返回excel
if (impError.Count() != 0)
return File(impError.ExportExcel(), "application/ms-excel", $"导入错误的老师{DateTime.Now.ToString("MMddHHmm")}.xlsx");
//调用 用户中心 导入接口 //调用 用户中心 导入接口
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp); var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);
@ -196,9 +210,18 @@ namespace Learn.Archives.API.Controllers
if (dataList == null || dataList.Count() == 0) if (dataList == null || dataList.Count() == 0)
Oh.ModelError("导入失败:无有效数据"); Oh.ModelError("导入失败:无有效数据");
var insertInfo = new List<Student>(); var insertInfo = new List<Student>();
var impError = new List<StudentInfoImportError>();
var userCenterImp = new List<UserExcelExportData>(); var userCenterImp = new List<UserExcelExportData>();
foreach (var s in dataList) foreach (var s in dataList)
{ {
var ginfo = GradeHelper.GetStudentGradeBaseByGrade(s.Grade);
var gStr = GradeHelper.GetGrade(ginfo.GradeLevel, ginfo.GradeYear);
if (gStr.ToEnum<GradeEnum>() == null) //无效的传入年级
{
s.ErrorMsg = "无效的年级 例如[初一/初2028] [年级范围应当是当前有效的就读年级]";
impError.Add(s);
continue;
}
insertInfo.Add(new Student() insertInfo.Add(new Student()
{ {
AmountRelief = decimal.TryParse(s.AmountRelief,out decimal v)?v:0, AmountRelief = decimal.TryParse(s.AmountRelief,out decimal v)?v:0,
@ -217,7 +240,7 @@ namespace Learn.Archives.API.Controllers
UserType = "学生", UserType = "学生",
Account = s.Id.ToString(), Account = s.Id.ToString(),
School = s.School, School = s.School,
Grade = s.Grade, Grade = gStr,
Class = s.Class, Class = s.Class,
ClassType = s.ClassType??ClassTypeEnum..ToString(), ClassType = s.ClassType??ClassTypeEnum..ToString(),
ExamNo = s.Id.ToString(), ExamNo = s.Id.ToString(),
@ -227,6 +250,9 @@ namespace Learn.Archives.API.Controllers
}); });
} }
//如果有错误数据则返回excel
if (impError.Count() != 0)
return File(impError.ExportExcel(), "application/ms-excel", $"导入错误学生{DateTime.Now.ToString("MMddHHmm")}.xlsx");
//调用 用户中心 导入接口 //调用 用户中心 导入接口
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp); var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);

View File

@ -64,13 +64,13 @@ namespace Learn.Archives.Core.Common.Expand
/// <param name="setOrgEntityFilter">配置 学校数据 sql过滤 <para>默认true</para></param> /// <param name="setOrgEntityFilter">配置 学校数据 sql过滤 <para>默认true</para></param>
public static void SetDbAop(ISqlSugarClient db) public static void SetDbAop(ISqlSugarClient db)
{ {
if (db.Ado.CommandTimeOut == 61) //if (db.Ado.CommandTimeOut == 61)
{ //{
return; // return;
} //}
var config = db.CurrentConnectionConfig; var config = db.CurrentConnectionConfig;
//设置超时时间 //设置超时时间
db.Ado.CommandTimeOut = 61; //db.Ado.CommandTimeOut = 61;
#if DEBUG #if DEBUG
// 打印SQL语句 // 打印SQL语句
db.Aop.OnLogExecuting = (sql, pars) => db.Aop.OnLogExecuting = (sql, pars) =>
@ -105,11 +105,6 @@ namespace Learn.Archives.Core.Common.Expand
} }
}; };
// 超管时排除各种过滤器
//if (App.User?.FindFirst(ClaimEnum.Role)?.Value == "1")
//return;
// 配置用户机构(数据范围)过滤器
//SetOrgEntityFilter(db);
} }
@ -161,13 +156,13 @@ namespace Learn.Archives.Core.Common.Expand
if (!AppCommon.Config.DB.UpdateTable) if (!AppCommon.Config.DB.UpdateTable)
{ {
Console.WriteLine($"【1】初始化主库表 跳过...."); Console.WriteLine($"【1】初始化主库表 跳过....");
//ShowSQL = true; ShowSQL = true;
return; return;
} }
Console.WriteLine($"【1】初始化主库表 执行中...."); Console.WriteLine($"【1】初始化主库表 执行中....");
var entityTypes = AppCommon.DbMatserType; var entityTypes = AppCommon.DbMatserType;
Console.WriteLine($"【1】数量{entityTypes.Count()} ...."); Console.WriteLine($"【1】数量{entityTypes.Count()} ....");
if (!entityTypes.Any()) return; if (!entityTypes.Any()) { ShowSQL = true; return; };
var i = 0; var i = 0;
var totalCount = entityTypes.Count().ToString().Length; var totalCount = entityTypes.Count().ToString().Length;
foreach (var t in entityTypes) foreach (var t in entityTypes)

View File

@ -20,10 +20,12 @@ namespace Learn.Archives.Core.Common
public void SwitchConnection() public void SwitchConnection()
{ {
var t = typeof(T); var t = typeof(T);
if (AppCommon.DbMatserType.Contains(t)) ISqlSugarClient d;
base.Context = DbScoped.SugarScope; if (AppCommon.UserCenterType.Contains(t))
else if (AppCommon.UserCenterType.Contains(t)) d = DbScoped.SugarScope.GetConnectionScope(1001);
base.Context = DbScoped.SugarScope.GetConnectionScope(1001); else
d = DbScoped.SugarScope;
base.Context = d;
SqlSugarExpand.SetDbAop(base.Context); SqlSugarExpand.SetDbAop(base.Context);
} }
} }