public ActionResult Import(Models.StudentBest.Import vm) { if (ModelState.IsValid) { using (var db = new XkSystem.Models.DbContext()) { #region 文件 var file = Request.Files[nameof(vm.UploadFile)]; var fileSave = System.IO.Path.GetTempFileName(); file.SaveAs(fileSave); if (Code.Common.GetFileType(file.FileName) != Code.FileType.Excel) { ModelState.AddModelError("", "上传的文件不是正确的EXCLE文件!"); return(View(vm)); } var dt = Code.NpoiHelper.ExcelToDataTable(fileSave, System.IO.Path.GetExtension(file.FileName), string.Empty); if (dt == null) { ModelState.AddModelError("", "无法读取上传的文件,请检查文件格式是否正确!"); return(View(vm)); } var tbList = new List <string>() { "学生学号", "学生姓名" }; var Text = string.Empty; foreach (var a in tbList) { if (!dt.Columns.Contains(a.ToString())) { Text += a + ","; } } if (!string.IsNullOrEmpty(Text)) { ModelState.AddModelError("", "上传的EXCEL内容与预期不一致,缺少对应的字段:" + Text); return(View(vm)); } foreach (System.Data.DataRow dr in dt.Rows) { var dtoTemp = new Dto.StudentBest.Import() { StudentCode = dr["学生学号"].ConvertToString(), StudentName = dr["学生姓名"].ConvertToString() }; if (vm.ImportList.Where(d => d.StudentCode == dtoTemp.StudentCode && d.StudentName == dtoTemp.StudentName).Any() == false) { vm.ImportList.Add(dtoTemp); } } vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.StudentCode) && string.IsNullOrEmpty(d.StudentName)); if (vm.ImportList.Count == 0) { ModelState.AddModelError("", "未读取到任何有效数据!"); return(View(vm)); } #endregion #region 验证数据 var studentList = db.Table <Student.Entity.tbStudent>().ToList(); foreach (var item in vm.ImportList) { if (string.IsNullOrEmpty(item.StudentName)) { item.Error += "学生姓名不能为空;"; } if (string.IsNullOrEmpty(item.StudentCode)) { item.Error += "学生学号不能为空;"; } if (studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).Any() == false) { item.Error += "系统中不存在该学生;"; } } if (vm.ImportList.Where(d => string.IsNullOrEmpty(d.Error) == false).Count() > 0) { vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error)); return(View(vm)); } #endregion #region 保存数据 var studentBestList = db.Table <Student.Entity.tbStudentBest>() .Include(d => d.tbStudent).ToList(); var tbStudentBestList = new List <Student.Entity.tbStudentBest>(); foreach (var v in vm.ImportList) { if (tbStudentBestList.Where(d => d.tbStudent.StudentCode == v.StudentCode && d.tbStudent.StudentName == v.StudentName).Any() == false && studentBestList.Where(d => d.tbStudent.StudentCode == v.StudentCode && d.tbStudent.StudentName == v.StudentName).Any() == false) { var studentBest = new Student.Entity.tbStudentBest() { tbStudent = studentList.Where(d => d.StudentName == v.StudentName && d.StudentCode == v.StudentCode).FirstOrDefault(), tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(Code.Common.UserId), InputDate = DateTime.Now }; tbStudentBestList.Add(studentBest); } } db.Set <Student.Entity.tbStudentBest>().AddRange(tbStudentBestList); if (db.SaveChanges() > 0) { vm.Status = true; XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量添加优秀学生"); } #endregion } } vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error)); return(View(vm)); }
public ActionResult Import() { var vm = new Models.StudentBest.Import(); return(View(vm)); }