public ActionResult Edit(Models.TeacherDept.Edit vm) { using (var db = new XkSystem.Models.DbContext()) { var error = new List <string>(); if (error.Count == decimal.Zero) { if (db.Table <Teacher.Entity.tbTeacherDept>().Where(d => d.TeacherDeptName == vm.TeacherDeptEdit.TeacherDeptName && d.Id != vm.TeacherDeptEdit.Id).Any()) { error.AddError("部门名称已存在!"); } else { if (vm.TeacherDeptEdit.Id == 0) { var tb = new Teacher.Entity.tbTeacherDept(); tb.No = vm.TeacherDeptEdit.No == null?db.Table <Teacher.Entity.tbTeacherDept>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.TeacherDeptEdit.No; tb.TeacherDeptName = vm.TeacherDeptEdit.TeacherDeptName; tb.tbTeacherDeptParent = db.Set <Teacher.Entity.tbTeacherDept>().Find(vm.TeacherDeptEdit.TeacherDeptParentId); db.Set <Teacher.Entity.tbTeacherDept>().Add(tb); if (db.SaveChanges() > 0) { XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加部门"); } } else { var tb = (from p in db.Table <Teacher.Entity.tbTeacherDept>() where p.Id == vm.TeacherDeptEdit.Id select p).FirstOrDefault(); if (tb != null) { if (tb.Id == vm.TeacherDeptEdit.TeacherDeptParentId) { error.AddError("不能选择自己作为父节点!"); return(Code.MvcHelper.Post(error)); } if (vm.TeacherDeptEdit.TeacherDeptParentId.HasValue) { var sunList = GetSon(db, tb.Id); if (sunList.ToList().Contains(vm.TeacherDeptEdit.TeacherDeptParentId.Value)) { error.AddError("不能选择自己的子节点作为父节点!"); return(Code.MvcHelper.Post(error)); } else { tb.tbTeacherDeptParent = db.Set <Teacher.Entity.tbTeacherDept>().Find(vm.TeacherDeptEdit.TeacherDeptParentId); } } else { //删除父级 db.Entry <Entity.tbTeacherDept>(tb).Reference(p => p.tbTeacherDeptParent).Load(); tb.tbTeacherDeptParent = null; } tb.No = vm.TeacherDeptEdit.No == null?db.Table <Teacher.Entity.tbTeacherDept>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.TeacherDeptEdit.No; tb.TeacherDeptName = vm.TeacherDeptEdit.TeacherDeptName; if (db.SaveChanges() > 0) { XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改部门"); } } else { error.AddError(Resources.LocalizedText.MsgNotFound); } } } } return(Code.MvcHelper.Post(error)); } }
public ActionResult Import(Models.TeacherDept.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 dtoTemp = new Dto.TeacherDept.Import() { DeptName = dr["部门名称"].ConvertToString(), ParentDeptName = dr["上级部门"].ConvertToString() }; if (vm.ImportList.Where(d => d.DeptName == dtoTemp.DeptName && d.ParentDeptName == dtoTemp.ParentDeptName).Any() == false) { vm.ImportList.Add(dtoTemp); } } vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.DeptName) && string.IsNullOrEmpty(d.ParentDeptName)); if (vm.ImportList.Count == 0) { ModelState.AddModelError("", "未读取到任何有效数据!"); return(View(vm)); } #endregion #region 验证数据 var teacherDeptList = db.Table <Teacher.Entity.tbTeacherDept>().ToList(); foreach (var item in vm.ImportList) { if (string.IsNullOrEmpty(item.DeptName)) { item.Error += "部门名称不能为空!"; } if (!string.IsNullOrWhiteSpace(item.ParentDeptName)) { if (vm.IsCover) { if (vm.ImportList.Where(d => d.DeptName == item.ParentDeptName).Any() == false) { item.Error += "上级部门不存在!"; } if (vm.ImportList.Where(d => d.DeptName == item.ParentDeptName).Count() > 1) { item.Error += "存在多个相同的上级部门!"; } } else { if (vm.ImportList.Where(d => d.DeptName == item.ParentDeptName).Any() == false && teacherDeptList.Where(d => d.TeacherDeptName == item.ParentDeptName).Any() == false) { item.Error += "上级部门不存在!"; } if (vm.ImportList.Where(d => d.DeptName == item.ParentDeptName).Count() + teacherDeptList.Where(d => d.TeacherDeptName == item.ParentDeptName).Count() > 1) { 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 保存数据 if (vm.IsCover) { foreach (var v in teacherDeptList) { v.IsDeleted = true; } } var tbTeacherDeptList = new List <Teacher.Entity.tbTeacherDept>(); foreach (var v in vm.ImportList) { var teacherDept = new Teacher.Entity.tbTeacherDept() { TeacherDeptName = v.DeptName, UpdateTime = DateTime.Now }; if (!string.IsNullOrWhiteSpace(v.ParentDeptName)) { if (tbTeacherDeptList.Where(d => d.TeacherDeptName == v.ParentDeptName).Any()) { teacherDept.tbTeacherDeptParent = tbTeacherDeptList.Where(d => d.TeacherDeptName == v.ParentDeptName).FirstOrDefault(); } else { teacherDept.tbTeacherDeptParent = teacherDeptList.Where(d => d.TeacherDeptName == v.ParentDeptName).FirstOrDefault(); } } tbTeacherDeptList.Add(teacherDept); } db.Set <Teacher.Entity.tbTeacherDept>().AddRange(tbTeacherDeptList); if (db.SaveChanges() > 0) { vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error)); XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("导入教师部门"); vm.Status = true; } #endregion } } return(View(vm)); }