示例#1
0
        public ActionResult Edit(Models.ClassAllotStudent.Edit vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var error = new List <string>();
                if (error.Count == decimal.Zero)
                {
                    if (vm.ClassAllotStudentEdit.Id != 0)
                    {
                        var tb = db.Set <Basis.Entity.tbClassAllotStudent>().Find(vm.ClassAllotStudentEdit.Id);
                        tb.tbYear      = db.Set <Basis.Entity.tbYear>().Find(vm.ClassAllotStudentEdit.YearId);
                        tb.Score       = vm.ClassAllotStudentEdit.Score;
                        tb.tbClassType = db.Set <Basis.Entity.tbClassType>().Find(vm.ClassAllotStudentEdit.ClassTypeId);
                        tb.tbGrade     = db.Set <Basis.Entity.tbGrade>().Find(vm.ClassAllotStudentEdit.GradeId);
                        tb.tbStudent   = db.Table <Student.Entity.tbStudent>().Where(d => d.StudentCode == vm.ClassAllotStudentEdit.StudentCode).FirstOrDefault();
                    }
                    else
                    {
                        var student = new Student.Entity.tbStudent();
                        if (db.Table <Student.Entity.tbStudent>().Where(d => d.StudentCode == vm.ClassAllotStudentEdit.StudentCode && d.StudentName == vm.ClassAllotStudentEdit.StudentName).Count() == 0)
                        {
                            var studentEdit = new Student.Dto.Student.Edit()
                            {
                                StudentCode = vm.ClassAllotStudentEdit.StudentCode,
                                StudentName = vm.ClassAllotStudentEdit.StudentName
                            };
                            var studentEditList = new List <Student.Dto.Student.Edit>();
                            studentEditList.Add(studentEdit);

                            student = Student.Controllers.StudentController.BuildList(db, studentEditList).FirstOrDefault();
                        }
                        else
                        {
                            student = db.Table <Student.Entity.tbStudent>().Where(d => d.StudentCode == vm.ClassAllotStudentEdit.StudentCode && d.StudentName == vm.ClassAllotStudentEdit.StudentName).FirstOrDefault();
                        }

                        var tb = new Basis.Entity.tbClassAllotStudent()
                        {
                            tbYear      = db.Set <Basis.Entity.tbYear>().Find(vm.ClassAllotStudentEdit.YearId),
                            Score       = vm.ClassAllotStudentEdit.Score,
                            tbClassType = db.Set <Basis.Entity.tbClassType>().Find(vm.ClassAllotStudentEdit.ClassTypeId),
                            tbGrade     = db.Set <Basis.Entity.tbGrade>().Find(vm.ClassAllotStudentEdit.GradeId),
                            tbStudent   = student
                        };

                        db.Set <Basis.Entity.tbClassAllotStudent>().Add(tb);
                    }

                    if (db.SaveChanges() > 0)
                    {
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加/修改了分班学生");
                    }
                }

                return(Code.MvcHelper.Post(error));
            }
        }
示例#2
0
        public ActionResult Import(Models.ClassAllotStudent.Import vm)
        {
            vm.ImportStudentList = new List <Dto.ClassAllotStudent.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())
                {
                    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()))
                        {
                            Text += a + ",";
                        }
                    }
                    if (!string.IsNullOrEmpty(Text))
                    {
                        ModelState.AddModelError("", "上传的EXCEL行政班内容与预期不一致,缺少对应的字段:" + Text);
                        return(View(vm));
                    }

                    #region 将DataTable转为List
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        var dto = new Dto.ClassAllotStudent.Import()
                        {
                            StudentCode   = Convert.ToString(dr["学号"]),
                            StudentName   = Convert.ToString(dr["姓名"]),
                            GradeName     = Convert.ToString(dr["年级"]),
                            ClassTypeName = Convert.ToString(dr["班级类型"]),
                            Score         = Convert.ToString(dr["分班成绩"])
                        };
                        if (vm.ImportStudentList.Where(d => d.StudentCode == dto.StudentCode &&
                                                       d.StudentName == dto.StudentName &&
                                                       d.GradeName == dto.GradeName &&
                                                       d.ClassTypeName == dto.ClassTypeName &&
                                                       d.Score == dto.Score).Count() == 0)
                        {
                            vm.ImportStudentList.Add(dto);
                        }
                    }
                    vm.ImportStudentList.RemoveAll(d =>
                                                   string.IsNullOrEmpty(d.StudentCode) &&
                                                   string.IsNullOrEmpty(d.StudentName) &&
                                                   string.IsNullOrEmpty(d.GradeName) &&
                                                   string.IsNullOrEmpty(d.ClassTypeName) &&
                                                   string.IsNullOrEmpty(d.Score)
                                                   );
                    #endregion

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

                    var studentList = (from p in db.Table <Student.Entity.tbStudent>()
                                       select p).ToList();
                    var classStudentList      = db.Table <Basis.Entity.tbClassStudent>().Where(d => d.tbStudent.IsDeleted == false).ToList();
                    var classAllotStudentList = db.Table <Basis.Entity.tbClassAllotStudent>()
                                                .Where(d => d.tbStudent.IsDeleted == false)
                                                .Include(d => d.tbStudent).ToList();
                    var yearList      = db.Table <Basis.Entity.tbYear>().ToList();
                    var gradeList     = db.Table <Basis.Entity.tbGrade>().ToList();
                    var classTypeList = db.Table <Basis.Entity.tbClassType>().ToList();

                    #region 验证数据格式是否正确
                    foreach (var item in vm.ImportStudentList)
                    {
                        if (string.IsNullOrEmpty(item.StudentName))
                        {
                            item.Error += "姓名不能为空!";
                        }
                        if (string.IsNullOrEmpty(item.StudentCode))
                        {
                            item.Error += "学号不能为空!";
                        }
                        if (!vm.IsAddStudent)
                        {
                            if (studentList.Where(d => d.StudentCode == item.StudentCode).Count() == 0)
                            {
                                item.Error += "学生不存在!";
                            }
                            if (studentList.Where(d => d.StudentCode == item.StudentCode).Count() > 0 &&
                                studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).Count() == 0)
                            {
                                item.Error += "学号已存在,但姓名不匹配!";
                            }
                            if (classStudentList.Where(d => d.tbStudent.StudentCode == item.StudentCode).Count() > 0)
                            {
                                item.Error += "学生已存在其他行政班内!";
                            }
                            if (studentList.Where(d => d.StudentCode == item.StudentCode).Count() > 1)
                            {
                                item.Error += "学号对应多条学生记录,无法确认需要添加的记录!";
                            }
                        }
                        if (gradeList.Where(d => d.GradeName == item.GradeName).Count() == 0)
                        {
                            item.Error += "年级不存在;";
                        }
                        if (string.IsNullOrEmpty(item.Score))
                        {
                            item.Error += "分班成绩不能为空!";
                        }
                        else
                        {
                            decimal d = 0;
                            if (!decimal.TryParse(item.Score, out d))
                            {
                                item.Error += "分班成绩必须为数字!";
                            }
                        }
                    }
                    if (vm.ImportStudentList.Where(d => !string.IsNullOrEmpty(d.Error)).Count() > 0)
                    {
                        vm.ImportStudentList.RemoveAll(d => string.IsNullOrEmpty(d.Error));
                        return(View(vm));
                    }
                    #endregion

                    #region 创建外键
                    var editStudentList = new List <Student.Dto.Student.Edit>();
                    foreach (var v in vm.ImportStudentList)
                    {
                        if (studentList.Where(d => d.StudentCode == v.StudentCode && d.StudentName == v.StudentName).Count() == 0)
                        {
                            var editStudent = new Student.Dto.Student.Edit()
                            {
                                StudentCode = v.StudentCode,
                                StudentName = v.StudentName
                            };
                            if (editStudentList.Where(d => d.StudentCode == v.StudentCode && d.StudentName == v.StudentName).Count() == 0)
                            {
                                editStudentList.Add(editStudent);
                            }
                        }
                    }

                    var addStudentList = new List <Student.Entity.tbStudent>();
                    if (editStudentList.Count > 0)
                    {
                        addStudentList = Student.Controllers.StudentController.BuildList(db, editStudentList);
                    }
                    #endregion

                    #region 数据导入,判断关键字,存在的数据做更新,不存在的做新增
                    var addClassAllotStudentList = new List <Basis.Entity.tbClassAllotStudent>();
                    var year = db.Set <Basis.Entity.tbYear>().Find(vm.YearId);
                    foreach (var item in vm.ImportStudentList)
                    {
                        Basis.Entity.tbClassAllotStudent tb = null;
                        var yearId = yearList.Where(e => e.IsDefault).FirstOrDefault().Id;
                        if (classAllotStudentList.Where(d => d.tbStudent.StudentCode == item.StudentCode).Count() > 0)
                        {
                            if (vm.IsUpdate)
                            {
                                #region 修改
                                tb           = classAllotStudentList.Where(d => d.tbStudent.StudentCode == item.StudentCode).FirstOrDefault();
                                tb.Score     = item.Score.ConvertToDecimal();
                                tb.tbStudent = studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).FirstOrDefault();
                                tb.tbYear    = year;
                                #region 添加外键
                                if (!string.IsNullOrEmpty(item.StudentCode) && !string.IsNullOrEmpty(item.StudentName))
                                {
                                    if (vm.IsAddStudent && studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).Count() == 0)
                                    {
                                        tb.tbStudent = addStudentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).FirstOrDefault();
                                    }
                                    else
                                    {
                                        tb.tbStudent = studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).FirstOrDefault();
                                    }
                                }
                                if (!string.IsNullOrEmpty(item.GradeName))
                                {
                                    tb.tbGrade = gradeList.Where(d => d.GradeName == item.GradeName).FirstOrDefault();
                                }
                                #endregion

                                #endregion
                            }
                        }
                        else
                        {
                            #region 新增
                            tb             = new Basis.Entity.tbClassAllotStudent();
                            tb.tbYear      = year;
                            tb.Score       = item.Score.ConvertToDecimal();
                            tb.tbClassType = classTypeList.Where(d => d.ClassTypeName == item.ClassTypeName).FirstOrDefault();

                            #region 添加外键
                            if (!string.IsNullOrEmpty(item.StudentCode) && !string.IsNullOrEmpty(item.StudentName))
                            {
                                if (vm.IsAddStudent && studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).Count() == 0)
                                {
                                    tb.tbStudent = addStudentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).FirstOrDefault();
                                }
                                else
                                {
                                    tb.tbStudent = studentList.Where(d => d.StudentCode == item.StudentCode && d.StudentName == item.StudentName).FirstOrDefault();
                                }
                            }
                            if (!string.IsNullOrEmpty(item.GradeName))
                            {
                                tb.tbGrade = gradeList.Where(d => d.GradeName == item.GradeName).FirstOrDefault();
                            }
                            #endregion

                            addClassAllotStudentList.Add(tb);
                            #endregion
                        }
                    }
                    #endregion

                    db.Set <Basis.Entity.tbClassAllotStudent>().AddRange(addClassAllotStudentList);

                    if (db.SaveChanges() > 0)
                    {
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量导入了行政班");
                        vm.Status = true;
                    }
                }
            }

            vm.ImportStudentList.RemoveAll(d => string.IsNullOrEmpty(d.Error));
            return(View(vm));
        }