public ActionResult Edit(Models.DormStudent.Edit vm)
        {
            var error = new List <string>();

            if (error.Count == decimal.Zero)
            {
                using (var db = new XkSystem.Models.DbContext())
                {
                    //判断是否宿舍超出住宿人数
                    var maxCount = db.Set <Basis.Entity.tbRoom>().Find(vm.DormStudentEdit.RoomId).MaxUser;
                    var nowNum   = db.Table <Dorm.Entity.tbDormStudent>().Where(d => d.tbRoom.Id == vm.DormStudentEdit.RoomId).Count();
                    if (nowNum >= maxCount)
                    {
                        error.Add("此宿舍已经住满!");
                        return(Code.MvcHelper.Post(error));
                    }

                    if (vm.DormStudentEdit.Id > 0)
                    {
                        var tb = db.Set <Dorm.Entity.tbDormStudent>().Find(vm.DormStudentEdit.Id);
                        tb.tbDorm    = db.Set <Dorm.Entity.tbDorm>().Find(vm.DormStudentEdit.DormId);
                        tb.tbRoom    = db.Set <Basis.Entity.tbRoom>().Find(vm.DormStudentEdit.RoomId);
                        tb.tbStudent = db.Table <Student.Entity.tbStudent>().Where(d => d.StudentCode == vm.DormStudentEdit.StudentCode).FirstOrDefault();
                    }
                    else
                    {
                        var tb = new Dorm.Entity.tbDormStudent()
                        {
                            tbDorm    = db.Set <Dorm.Entity.tbDorm>().Find(vm.DormStudentEdit.DormId),
                            tbRoom    = db.Set <Basis.Entity.tbRoom>().Find(vm.DormStudentEdit.RoomId),
                            tbStudent = db.Table <Student.Entity.tbStudent>().Where(d => d.StudentCode == vm.DormStudentEdit.StudentCode).FirstOrDefault()
                        };
                        db.Set <Dorm.Entity.tbDormStudent>().Add(tb);
                    }
                    if (db.SaveChanges() > 0)
                    {
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("新增/修改了住宿学生");
                    }
                }
            }
            return(Code.MvcHelper.Post(error));
        }
Beispiel #2
0
        public ActionResult ProvidedDorm(Models.DormApply.ProvidedDorm vm)
        {
            var error = new List <string>();

            if (error.Count == decimal.Zero)
            {
                using (var db = new XkSystem.Models.DbContext())
                {
                    //判断是否宿舍超出住宿人数
                    var maxCount = db.Set <Basis.Entity.tbRoom>().Find(vm.DormApplyProvidedDorm.RoomId).MaxUser;
                    var nowNum   = db.Table <Dorm.Entity.tbDormStudent>().Where(d => d.tbRoom.Id == vm.DormApplyProvidedDorm.RoomId).Count();
                    if (nowNum >= maxCount)
                    {
                        error.Add("此宿舍已经住满!");
                        return(Code.MvcHelper.Post(error));
                    }

                    var tb = new Dorm.Entity.tbDormStudent()
                    {
                        tbDorm    = db.Set <Dorm.Entity.tbDorm>().Find(vm.DormApplyProvidedDorm.DormId),
                        tbRoom    = db.Set <Basis.Entity.tbRoom>().Find(vm.DormApplyProvidedDorm.RoomId),
                        tbStudent = db.Table <Student.Entity.tbStudent>().Where(d => d.StudentCode == vm.DormApplyProvidedDorm.StudentCode &&
                                                                                d.StudentName == vm.DormApplyProvidedDorm.StudentName).FirstOrDefault()
                    };
                    db.Set <Dorm.Entity.tbDormStudent>().Add(tb);

                    var dormApply = db.Set <Dorm.Entity.tbDormApply>().Find(vm.DormApplyProvidedDorm.Id);
                    dormApply.IsDeleted = true;

                    if (db.SaveChanges() > 0)
                    {
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改/添加了住宿申请");
                    }
                }
            }

            return(Code.MvcHelper.Post(error));
        }
        public ActionResult Import(Models.DormStudent.Import vm)
        {
            vm.ImportList = new List <Dto.DormStudent.Import>();
            if (ModelState.IsValid)
            {
                var file     = Request.Files[nameof(vm.UploadFile)];
                var fileSave = System.IO.Path.GetTempFileName();
                file.SaveAs(fileSave);

                using (var db = new XkSystem.Models.DbContext())
                {
                    #region   数据
                    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.DormStudent.Import()
                        {
                            DormName    = dr["住宿名称"].ConvertToString(),
                            RoomName    = dr["宿舍名称"].ConvertToString(),
                            BuildName   = dr["宿舍楼"].ConvertToString(),
                            StudentCode = dr["学生学号"].ConvertToString(),
                            StudentName = dr["学生姓名"].ConvertToString()
                        };
                        if (vm.ImportList.Where(d => d.DormName == dto.DormName &&
                                                d.RoomName == dto.RoomName &&
                                                d.BuildName == dto.BuildName &&
                                                d.StudentCode == dto.StudentCode &&
                                                d.StudentName == dto.StudentName).Any() == false)
                        {
                            vm.ImportList.Add(dto);
                        }
                    }

                    vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.RoomName) &&
                                            string.IsNullOrEmpty(d.DormName) &&
                                            string.IsNullOrEmpty(d.BuildName) &&
                                            string.IsNullOrEmpty(d.StudentName) &&
                                            string.IsNullOrEmpty(d.StudentCode));

                    if (vm.ImportList.Count == 0)
                    {
                        ModelState.AddModelError("", "未读取到任何有效数据!");
                        return(View(vm));
                    }
                    #endregion

                    var RoomList = db.Table <Basis.Entity.tbRoom>()
                                   .Include(d => d.tbBuild).ToList();
                    var BuildList       = db.Table <Basis.Entity.tbBuild>().ToList();
                    var dormStudentList = db.Table <Dorm.Entity.tbDormStudent>()
                                          .Include(d => d.tbStudent)
                                          .Include(d => d.tbRoom)
                                          .Include(d => d.tbRoom.tbBuild).ToList();
                    var studentList = db.Table <Student.Entity.tbStudent>().ToList();
                    var dormList    = db.Table <Dorm.Entity.tbDorm>().ToList();

                    #region 验证数据格式是否正确
                    foreach (var item in vm.ImportList)
                    {
                        if (string.IsNullOrEmpty(item.RoomName) ||
                            string.IsNullOrEmpty(item.DormName) ||
                            string.IsNullOrEmpty(item.BuildName) ||
                            string.IsNullOrEmpty(item.StudentName) ||
                            string.IsNullOrEmpty(item.StudentCode))
                        {
                            item.Error += "字段不能为空!";
                        }
                        if (studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).Any() == false)
                        {
                            item.Error += "学生不存在;";
                        }
                        if (RoomList.Where(d => d.RoomName == item.RoomName && d.tbBuild.BuildName == item.BuildName).Any() == false)
                        {
                            item.Error += "宿舍不存在;";
                        }
                        if (!vm.IsUpdate && dormStudentList.Where(d => d.tbStudent.StudentCode == item.StudentCode).Count() > 0)
                        {
                            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 数据导入
                    List <Dorm.Entity.tbDormStudent> tbDormStudentList = new List <Dorm.Entity.tbDormStudent>();
                    foreach (var v in vm.ImportList)
                    {
                        if (dormStudentList.Where(d => d.tbStudent.StudentCode == v.StudentCode && d.tbStudent.StudentName == v.StudentName).Count() > 0)
                        {
                            if (vm.IsUpdate)
                            {
                                var tb = dormStudentList.Where(d => d.tbStudent.StudentCode == v.StudentCode && d.tbStudent.StudentName == v.StudentName).FirstOrDefault();
                                tb.tbRoom = RoomList.Where(d => d.RoomName == v.RoomName && d.tbBuild.BuildName == v.BuildName).FirstOrDefault();
                                tb.tbDorm = dormList.Where(d => d.DormName == v.DormName).FirstOrDefault();
                            }
                        }
                        else
                        {
                            var tb = new Dorm.Entity.tbDormStudent();
                            tb.tbDorm    = dormList.Where(d => d.DormName == v.DormName).FirstOrDefault();
                            tb.tbStudent = studentList.Where(d => d.StudentCode == v.StudentCode && d.StudentName == v.StudentName).FirstOrDefault();
                            tb.tbRoom    = RoomList.Where(d => d.RoomName == v.RoomName && d.tbBuild.BuildName == v.BuildName).FirstOrDefault();

                            tbDormStudentList.Add(tb);
                        }
                    }
                    #endregion

                    db.Set <Dorm.Entity.tbDormStudent>().AddRange(tbDormStudentList);

                    if (db.SaveChanges() > 0)
                    {
                        vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error));
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("导入宿舍信息");
                        vm.Status = true;
                    }
                }
            }

            return(View(vm));
        }