public ActionResult Import(Models.TeacherHonor.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()) == false) { Text += a + ","; } } if (string.IsNullOrEmpty(Text) == false) { ModelState.AddModelError("", "上传的EXCEL内容与预期不一致,缺少对应的字段:" + Text); return(View(vm)); } foreach (System.Data.DataRow dr in dt.Rows) { var dto = new Dto.TeacherHonor.Import() { HonorName = dr["荣誉名称"].ConvertToString(), TeacherCode = dr["教师编号"].ConvertToString(), TeacherName = dr["教师姓名"].ConvertToString(), TeacherHonorLevelName = dr["荣誉级别"].ConvertToString(), TeacherHonorTypeName = dr["荣誉类型"].ConvertToString() }; int no = 0; if (int.TryParse(dr["排序"].ConvertToString(), out no)) { dto.No = no; } else { ModelState.AddModelError("", "排序字段必须是数字!"); return(View(vm)); } if (vm.ImportList.Where(d => d.No == dto.No && d.HonorName == dto.HonorName && d.TeacherCode == dto.TeacherCode && d.TeacherHonorLevelName == dto.TeacherHonorLevelName && d.TeacherHonorTypeName == dto.TeacherHonorTypeName && d.TeacherName == dto.TeacherName).Any() == false) { vm.ImportList.Add(dto); } } vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.TeacherCode) && string.IsNullOrEmpty(d.TeacherName) && d.No == 0 && string.IsNullOrEmpty(d.HonorName) && string.IsNullOrEmpty(d.TeacherHonorLevelName) && string.IsNullOrEmpty(d.TeacherHonorTypeName)); if (vm.ImportList.Count == 0) { ModelState.AddModelError("", "未读取到任何有效数据!"); return(View(vm)); } #endregion #region 验证数据 var teacherList = db.Table <Teacher.Entity.tbTeacher>().ToList(); var teacherHonorTypeList = db.Table <Teacher.Entity.tbTeacherHonorType>().ToList(); var teacherHonorLevelList = db.Table <Teacher.Entity.tbTeacherHonorLevel>().ToList(); var teacherHonorList = db.Table <Teacher.Entity.tbTeacherHonor>() .Include(d => d.tbTeacher) .Include(d => d.tbTeacherHonorLevel) .Include(d => d.tbTeacherHonorType).ToList(); foreach (var v in vm.ImportList) { if (string.IsNullOrWhiteSpace(v.TeacherCode)) { v.Error += "教师编号不能为空;"; } if (string.IsNullOrWhiteSpace(v.TeacherName)) { v.Error += "教师名称不能为空;"; } if (string.IsNullOrWhiteSpace(v.HonorName)) { v.Error += "荣誉名称不能为空;"; } if (string.IsNullOrWhiteSpace(v.TeacherHonorLevelName)) { v.Error += "荣誉级别不能为空;"; } if (string.IsNullOrWhiteSpace(v.TeacherHonorTypeName)) { v.Error += "荣誉类型不能为空;"; } if (teacherList.Where(d => d.TeacherCode == v.TeacherCode && d.TeacherName == v.TeacherName).Any() == false) { v.Error += "教师不存在;"; } if (teacherHonorLevelList.Where(d => d.TeacherHonorLevelName == v.TeacherHonorLevelName).Any() == false) { v.Error += "荣誉级别不存在;"; } if (teacherHonorTypeList.Where(d => d.TeacherHonorTypeName == v.TeacherHonorTypeName).Any() == false) { v.Error += "荣誉类型不存在;"; } if (vm.IsUpdate == false && teacherHonorList.Where(d => d.HonorName == v.HonorName).Any()) { v.Error += "系统中已存在此记录;"; } //if (vm.IsUpdate == false && teacherHonorList.Where(d => d.HonorName == v.HonorName // && d.tbTeacher.TeacherCode == v.TeacherCode // && d.tbTeacherHonorLevel.TeacherHonorLevelName == v.TeacherHonorLevelName // && d.tbTeacherHonorType.TeacherHonorTypeName == v.TeacherHonorTypeName).Any()) //{ // v.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 tbTeacherHonorList = new List <Teacher.Entity.tbTeacherHonor>(); foreach (var v in vm.ImportList) { if (teacherHonorList.Where(d => d.HonorName == v.HonorName).Any()) { var tb = teacherHonorList.Where(d => d.HonorName == v.HonorName).FirstOrDefault(); tb.No = v.No; tb.tbTeacher = teacherList.Where(d => d.TeacherCode == v.TeacherCode).FirstOrDefault(); tb.tbTeacherHonorLevel = teacherHonorLevelList.Where(d => d.TeacherHonorLevelName == v.TeacherHonorLevelName).FirstOrDefault(); tb.tbTeacherHonorType = teacherHonorTypeList.Where(d => d.TeacherHonorTypeName == v.TeacherHonorTypeName).FirstOrDefault(); } else { var tb = new Teacher.Entity.tbTeacherHonor() { No = v.No, HonorName = v.HonorName, tbTeacher = teacherList.Where(d => d.TeacherCode == v.TeacherCode).FirstOrDefault(), tbTeacherHonorLevel = teacherHonorLevelList.Where(d => d.TeacherHonorLevelName == v.TeacherHonorLevelName).FirstOrDefault(), tbTeacherHonorType = teacherHonorTypeList.Where(d => d.TeacherHonorTypeName == v.TeacherHonorTypeName).FirstOrDefault() }; tbTeacherHonorList.Add(tb); } } db.Set <Teacher.Entity.tbTeacherHonor>().AddRange(tbTeacherHonorList); if (db.SaveChanges() > 0) { vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error)); XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("导入教师荣誉"); //刷新缓存 System.Web.HttpContext.Current.Cache["Power"] = Sys.Controllers.SysRolePowerController.GetPower(); vm.Status = true; } #endregion } } return(View(vm)); }
public ActionResult Import() { var vm = new Models.TeacherHonor.Import(); return(View(vm)); }