Пример #1
0
        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));
            }
        }
Пример #2
0
        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));
        }