完善 老师导入流程
This commit is contained in:
parent
6b310cb4d4
commit
c9f9c22e6d
|
|
@ -224,7 +224,7 @@ namespace Learn.Archives.API.Controllers
|
|||
}
|
||||
}
|
||||
if (errorExcelInfo.Count != 0)
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel");
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel", $"错误考试信息{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
|
||||
//写入数据库
|
||||
var baseDB = baseService.Context;
|
||||
|
|
@ -270,7 +270,8 @@ namespace Learn.Archives.API.Controllers
|
|||
英语 = 80.5m,
|
||||
赋分后总分=721.5m
|
||||
} };
|
||||
return File(resultList.ExportExcel(), "application/ms-excel");
|
||||
return File(resultList.ExportExcel(), "application/ms-excel",
|
||||
$"导入成绩模板{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ namespace Learn.Archives.API.Controllers
|
|||
/// <summary>
|
||||
/// 导入考试信息
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost, ResultIgnore]
|
||||
[HttpLogEnable]
|
||||
|
|
@ -136,7 +135,6 @@ namespace Learn.Archives.API.Controllers
|
|||
if (dataList == null || dataList.Count() == 0)
|
||||
Oh.ModelError("导入失败:无有效数据");
|
||||
|
||||
//todo
|
||||
//处理数据
|
||||
var errorExcelInfo = new List<SchoolBusinessImportError>();
|
||||
var insertInfo = new List<SchoolBusiness>();
|
||||
|
|
@ -253,7 +251,8 @@ namespace Learn.Archives.API.Controllers
|
|||
|
||||
};
|
||||
if (errorExcelInfo.Count != 0)
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel");
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel"
|
||||
, $"错误赴校信息{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
|
||||
//写入数据库
|
||||
await baseService.InsertRangeAsync(insertInfo);
|
||||
|
|
@ -261,7 +260,7 @@ namespace Learn.Archives.API.Controllers
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下载导入成绩模板
|
||||
/// 下载导入模板
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||
|
|
@ -271,7 +270,23 @@ namespace Learn.Archives.API.Controllers
|
|||
return File(resultList.ExportExcel(), "application/ms-excel", "导入赴校信息模板.xlsx");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下载导出模板
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||
public async Task<IActionResult> ExportTemplate()
|
||||
{
|
||||
var qData = await baseService.AsQueryable()
|
||||
.Where(s => true)
|
||||
.ToArrayAsync();
|
||||
|
||||
|
||||
|
||||
//todo完善数据转换
|
||||
var resultList = new List<SchoolBusinessImport>() { new SchoolBusinessImport() { } };
|
||||
return File(resultList.ExportExcel(), "application/ms-excel", "导入赴校信息模板.xlsx");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ using System.Security.Claims;
|
|||
using System.Text.RegularExpressions;
|
||||
using UserCenter.Model;
|
||||
using UserCenter.Model.Common;
|
||||
using UserCenter.Model.Enum;
|
||||
|
||||
namespace Learn.Archives.API.Controllers
|
||||
{
|
||||
|
|
@ -108,11 +109,66 @@ namespace Learn.Archives.API.Controllers
|
|||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 导入老师信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost, ResultIgnore]
|
||||
[HttpLogEnable]
|
||||
public async Task<IActionResult> ImportTeacher(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<TeacherInfoImportError> dataList;
|
||||
using var stream = new MemoryStream();
|
||||
{
|
||||
await fl.CopyToAsync(stream);
|
||||
dataList = stream.Query<TeacherInfoImportError>()
|
||||
.Where(s => !string.IsNullOrEmpty(s.School));
|
||||
}
|
||||
if (dataList == null || dataList.Count() == 0)
|
||||
Oh.ModelError("导入失败:无有效数据");
|
||||
var insertInfo = new List<Student>();
|
||||
var userCenterImp = new List<UserExcelExportData>();
|
||||
foreach (var s in dataList)
|
||||
{
|
||||
userCenterImp.Add(new UserExcelExportData()
|
||||
{
|
||||
UserType = s.UserType,
|
||||
Account = s.Phone.ToString(),
|
||||
Subject = s.Subject,
|
||||
ExamNo = s.ExamNo,
|
||||
School = s.School,
|
||||
Grade = s.Grade,
|
||||
Class = s.Class,
|
||||
ClassType = s.ClassType,
|
||||
Phone = s.Phone,
|
||||
RealName = s.RealName,
|
||||
Stages = s.Grade.Contains("初") ? StudentStagesEnum.初中.ToString() : StudentStagesEnum.高中.ToString()
|
||||
});
|
||||
}
|
||||
|
||||
//调用 用户中心 导入接口
|
||||
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);
|
||||
|
||||
//处理数据
|
||||
var errorExcelInfo = importRes.ErrorExcelExport.Select(s => s.Adapt<StudentInfoImportError>());
|
||||
//如果有错误数据则返回excel
|
||||
if (errorExcelInfo.Count() != 0)
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel", $"导入错误的老师{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 导入考试信息
|
||||
/// 导入学生信息
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost, ResultIgnore]
|
||||
|
|
@ -134,14 +190,13 @@ namespace Learn.Archives.API.Controllers
|
|||
}
|
||||
if (dataList == null || dataList.Count() == 0)
|
||||
Oh.ModelError("导入失败:无有效数据");
|
||||
|
||||
var insertInfo = new List<Student>();
|
||||
var userCenterImp = new List<UserExcelExportData>();
|
||||
foreach (var s in dataList)
|
||||
{
|
||||
insertInfo.Add(new Student()
|
||||
{
|
||||
AmountRelief = s.AmountRelief,
|
||||
AmountRelief = decimal.TryParse(s.AmountRelief,out decimal v)?v:0,
|
||||
ExitTime = s.ExitTime,
|
||||
Remark = s.Remark,
|
||||
JoinTime = s.JoinTime,
|
||||
|
|
@ -159,23 +214,28 @@ namespace Learn.Archives.API.Controllers
|
|||
ExamNo = s.Id.ToString(),
|
||||
Phone = s.Phone,
|
||||
RealName = s.RealName,
|
||||
Stages = s.Stages
|
||||
Stages = s.Grade.Contains("初")? StudentStagesEnum.初中.ToString() : StudentStagesEnum.高中.ToString()
|
||||
});
|
||||
}
|
||||
|
||||
//调用 用户中心 导入接口
|
||||
var importRes = await _userCenterService.CallAPI_ImportJsonData(_httpContextAccessor.HttpContext, userCenterImp);
|
||||
|
||||
var hUAccount = importRes.InsertUsers.Select(s => s.Account).ToHashSet();
|
||||
var hUAccount = importRes.InsertUsers.ToDictionary(s=>s.Account,s=>s.Id);
|
||||
//基于结果判断添加成功`
|
||||
insertInfo = insertInfo.Where(s => hUAccount.Contains(s.Id.ToString())).ToList();
|
||||
insertInfo = insertInfo
|
||||
.Where(s => hUAccount.ContainsKey(s.UserCenterId.ToString())).Select(s =>
|
||||
{
|
||||
s.UserCenterId = hUAccount[s.UserCenterId.ToString()];
|
||||
return s;
|
||||
}).ToList();
|
||||
//部分成功的数据写入数据库
|
||||
await baseService.InsertRangeAsync(insertInfo);
|
||||
//处理数据
|
||||
var errorExcelInfo = importRes.ErrorExcelExport.Select(s => s.Adapt<StudentInfoImportError>());
|
||||
//如果有错误数据则返回excel
|
||||
if (errorExcelInfo.Count() != 0)
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel");
|
||||
return File(errorExcelInfo.ExportExcel(), "application/ms-excel", $"导入错误学生{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
|
@ -185,6 +245,54 @@ namespace Learn.Archives.API.Controllers
|
|||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 下载导入模板
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||
public IActionResult DwImportTemplate()
|
||||
{
|
||||
var resultList = new List<StudentInfoImport>() { new StudentInfoImport()
|
||||
{
|
||||
RealName = "导入规范[导入时请删除本列]",
|
||||
School = "必填:与系统匹配",
|
||||
Grade = "必填:可选值\r\n[初一初二初三,高一高二高山]",
|
||||
Class = "必填:与系统匹配\r\n格式:10班[数字+班]",
|
||||
ClassType = "必填:可选值\r\n[云校班 海豚智学班 蓝鲸智库班 中职班 其他 雅思班 点阵笔班级 移动校园班级 智学班 ...]",
|
||||
Status = "选填 可选值\r\n[就读,退出]",
|
||||
AmountRelief ="选填: 为0则视为 '未申请减免'",
|
||||
Phone="选填",
|
||||
Remark="选填",
|
||||
} };
|
||||
return File(resultList.ExportExcel(), "application/ms-excel",
|
||||
$"导入学生模板{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 下载导入老师模板
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet, ResultIgnore, AllowAnonymous]
|
||||
public IActionResult DwImportTeacherTemplate()
|
||||
{
|
||||
var resultList = new List<TeacherInfoImport>() {
|
||||
new TeacherInfoImport()
|
||||
{
|
||||
Phone="必填",
|
||||
RealName = "导入规范[导入时请删除本列]",
|
||||
UserType = "必填 可选值\r\n[年级主任,班主任,教师]",
|
||||
School = "必填:与系统匹配",
|
||||
Grade = "必填:可选值\r\n[初一初二初三,高一高二高山]",
|
||||
Class = "必填:与系统匹配\r\n格式:10班[数字+班]\r\n任教类型是年级主任时不填",
|
||||
ClassType = "必填:可选值\r\n[云校班 海豚智学班 蓝鲸智库班 中职班 其他 雅思班 点阵笔班级 移动校园班级 智学班 ...]\r\n任教类型是年级主任时不填",
|
||||
Subject = "选填学科",
|
||||
ExamNo ="选填: 填写老师任职信息[不在授课架构中的职务]",
|
||||
}};
|
||||
return File(resultList.ExportExcel(), "application/ms-excel",
|
||||
$"导入老师模板_{DateTime.Now.ToString("MMddHHmm")}.xlsx");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ namespace Learn.Archives.Core.Common
|
|||
|
||||
var httpClient = _httpClientFactory.CreateClient();
|
||||
|
||||
var targetUri = new Uri(AppCommon.Config.UserCenterService.API + API_ImportJsonData);
|
||||
var targetUri = new Uri(AppCommon.Config.UserCenterService.API +"/"+ API_ImportJsonData);
|
||||
var requestMessage = new HttpRequestMessage(new HttpMethod("POST"), targetUri);
|
||||
|
||||
if (context.Request.Headers.TryGetValue("Authorization", out var authValues))
|
||||
|
|
@ -71,7 +71,7 @@ namespace Learn.Archives.Core.Common
|
|||
requestMessage.Content = new StringContent(data.ToJson(), Encoding.UTF8, "application/json");
|
||||
|
||||
var responseMessage = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseHeadersRead);
|
||||
var resStr = await requestMessage.Content?.ReadAsStringAsync();
|
||||
var resStr = await responseMessage.Content?.ReadAsStringAsync();
|
||||
var res = JsonSerializer.Deserialize<BaseReturn<UserImportRes>>(resStr);
|
||||
if (res == null || res.Code != 200)
|
||||
Oh.Error(res.Message, res.Code);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,67 @@ using UserCenter.Model;
|
|||
|
||||
namespace Learn.Archives.Core.Model.Dto
|
||||
{
|
||||
public class TeacherInfoImportError : TeacherInfoImport
|
||||
{
|
||||
/// <summary>
|
||||
/// 导入失败原因
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "导入失败原因", Width = 50)]
|
||||
public string ErrorMsg { get; set; }
|
||||
}
|
||||
public class TeacherInfoImport
|
||||
{
|
||||
/// <summary>
|
||||
/// 姓名
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "姓名", Width = 20)]
|
||||
public string RealName { get; set; }
|
||||
/// <summary>
|
||||
/// 联系电话
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "联系电话", Width = 18)]
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任教类型
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "任教类型", Width = 20)]
|
||||
public string UserType { get; set; }
|
||||
/// <summary>
|
||||
/// 学校
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "学校", Width = 20)]
|
||||
public string School { get; set; }
|
||||
/// <summary>
|
||||
/// 年级
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "年级", Width = 10)]
|
||||
public string Grade { get; set; }
|
||||
/// <summary>
|
||||
/// 班级
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "班级", Width = 15)]
|
||||
public string Class { get; set; }
|
||||
/// <summary>
|
||||
/// 班级类型
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "班级类型", Width = 20)]
|
||||
public string ClassType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 科目
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "科目", Width = 20)]
|
||||
public string Subject { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 职务
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "职务", Width = 20)]
|
||||
public string ExamNo { get; set; }
|
||||
|
||||
}
|
||||
|
||||
public class UserImportInsertUser
|
||||
{
|
||||
|
|
@ -17,6 +78,7 @@ namespace Learn.Archives.Core.Model.Dto
|
|||
// 摘要:
|
||||
// 账号
|
||||
public string Account { get; set; }
|
||||
public long Id { get; set; }
|
||||
}
|
||||
public class UserImportRes
|
||||
{
|
||||
|
|
@ -60,30 +122,24 @@ namespace Learn.Archives.Core.Model.Dto
|
|||
/// <summary>
|
||||
/// 年级
|
||||
/// </summary>
|
||||
[ExcelColumn(Name="年级")]
|
||||
[ExcelColumn(Name="年级", Width = 20)]
|
||||
public string Grade { get; set; }
|
||||
/// <summary>
|
||||
/// 班级
|
||||
/// </summary>
|
||||
[ExcelColumn(Name="班级")]
|
||||
[ExcelColumn(Name="班级", Width = 15)]
|
||||
public string Class { get; set; }
|
||||
/// <summary>
|
||||
/// 班级
|
||||
/// </summary>
|
||||
[ExcelColumn(Name="班级类型")]
|
||||
[ExcelColumn(Name="班级类型", Width = 20)]
|
||||
public string ClassType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学段
|
||||
/// </summary>
|
||||
[ExcelColumn(Name="学段")]
|
||||
public string? Stages { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 减免金额
|
||||
/// </summary>
|
||||
[ExcelColumn(Name = "减免金额")]
|
||||
public decimal AmountRelief { get; set; }
|
||||
public string AmountRelief { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 学生状态[就读/退出]
|
||||
|
|
@ -108,9 +164,12 @@ namespace Learn.Archives.Core.Model.Dto
|
|||
/// </summary>
|
||||
[ExcelColumn(Name = "备注",Width =50)]
|
||||
public string? Remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// id
|
||||
/// </summary>
|
||||
///
|
||||
[ExcelColumn(Ignore = true)]
|
||||
public long Id { get; set; } = Yitter.IdGenerator.YitIdHelper.NextId();
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue