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));
        }
        public ActionResult Import()
        {
            var vm = new Models.TeacherDept.Import();

            return(View(vm));
        }