Exemplo n.º 1
0
        public ActionResult Import(Models.TeacherHonor.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 dto = new Dto.TeacherHonor.Import()
                        {
                            HonorName             = dr["荣誉名称"].ConvertToString(),
                            TeacherCode           = dr["教师编号"].ConvertToString(),
                            TeacherName           = dr["教师姓名"].ConvertToString(),
                            TeacherHonorLevelName = dr["荣誉级别"].ConvertToString(),
                            TeacherHonorTypeName  = dr["荣誉类型"].ConvertToString()
                        };
                        int no = 0;
                        if (int.TryParse(dr["排序"].ConvertToString(), out no))
                        {
                            dto.No = no;
                        }
                        else
                        {
                            ModelState.AddModelError("", "排序字段必须是数字!");
                            return(View(vm));
                        }
                        if (vm.ImportList.Where(d => d.No == dto.No &&
                                                d.HonorName == dto.HonorName &&
                                                d.TeacherCode == dto.TeacherCode &&
                                                d.TeacherHonorLevelName == dto.TeacherHonorLevelName &&
                                                d.TeacherHonorTypeName == dto.TeacherHonorTypeName &&
                                                d.TeacherName == dto.TeacherName).Any() == false)
                        {
                            vm.ImportList.Add(dto);
                        }
                    }

                    vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.TeacherCode) &&
                                            string.IsNullOrEmpty(d.TeacherName) &&
                                            d.No == 0 &&
                                            string.IsNullOrEmpty(d.HonorName) &&
                                            string.IsNullOrEmpty(d.TeacherHonorLevelName) &&
                                            string.IsNullOrEmpty(d.TeacherHonorTypeName));

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

                    #region 验证数据
                    var teacherList           = db.Table <Teacher.Entity.tbTeacher>().ToList();
                    var teacherHonorTypeList  = db.Table <Teacher.Entity.tbTeacherHonorType>().ToList();
                    var teacherHonorLevelList = db.Table <Teacher.Entity.tbTeacherHonorLevel>().ToList();
                    var teacherHonorList      = db.Table <Teacher.Entity.tbTeacherHonor>()
                                                .Include(d => d.tbTeacher)
                                                .Include(d => d.tbTeacherHonorLevel)
                                                .Include(d => d.tbTeacherHonorType).ToList();
                    foreach (var v in vm.ImportList)
                    {
                        if (string.IsNullOrWhiteSpace(v.TeacherCode))
                        {
                            v.Error += "教师编号不能为空;";
                        }
                        if (string.IsNullOrWhiteSpace(v.TeacherName))
                        {
                            v.Error += "教师名称不能为空;";
                        }
                        if (string.IsNullOrWhiteSpace(v.HonorName))
                        {
                            v.Error += "荣誉名称不能为空;";
                        }
                        if (string.IsNullOrWhiteSpace(v.TeacherHonorLevelName))
                        {
                            v.Error += "荣誉级别不能为空;";
                        }
                        if (string.IsNullOrWhiteSpace(v.TeacherHonorTypeName))
                        {
                            v.Error += "荣誉类型不能为空;";
                        }
                        if (teacherList.Where(d => d.TeacherCode == v.TeacherCode && d.TeacherName == v.TeacherName).Any() == false)
                        {
                            v.Error += "教师不存在;";
                        }
                        if (teacherHonorLevelList.Where(d => d.TeacherHonorLevelName == v.TeacherHonorLevelName).Any() == false)
                        {
                            v.Error += "荣誉级别不存在;";
                        }
                        if (teacherHonorTypeList.Where(d => d.TeacherHonorTypeName == v.TeacherHonorTypeName).Any() == false)
                        {
                            v.Error += "荣誉类型不存在;";
                        }
                        if (vm.IsUpdate == false && teacherHonorList.Where(d => d.HonorName == v.HonorName).Any())
                        {
                            v.Error += "系统中已存在此记录;";
                        }
                        //if (vm.IsUpdate == false && teacherHonorList.Where(d => d.HonorName == v.HonorName
                        //         && d.tbTeacher.TeacherCode == v.TeacherCode
                        //         && d.tbTeacherHonorLevel.TeacherHonorLevelName == v.TeacherHonorLevelName
                        //         && d.tbTeacherHonorType.TeacherHonorTypeName == v.TeacherHonorTypeName).Any())
                        //{
                        //    v.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 数据导入
                    var tbTeacherHonorList = new List <Teacher.Entity.tbTeacherHonor>();
                    foreach (var v in vm.ImportList)
                    {
                        if (teacherHonorList.Where(d => d.HonorName == v.HonorName).Any())
                        {
                            var tb = teacherHonorList.Where(d => d.HonorName == v.HonorName).FirstOrDefault();
                            tb.No                  = v.No;
                            tb.tbTeacher           = teacherList.Where(d => d.TeacherCode == v.TeacherCode).FirstOrDefault();
                            tb.tbTeacherHonorLevel = teacherHonorLevelList.Where(d => d.TeacherHonorLevelName == v.TeacherHonorLevelName).FirstOrDefault();
                            tb.tbTeacherHonorType  = teacherHonorTypeList.Where(d => d.TeacherHonorTypeName == v.TeacherHonorTypeName).FirstOrDefault();
                        }
                        else
                        {
                            var tb = new Teacher.Entity.tbTeacherHonor()
                            {
                                No                  = v.No,
                                HonorName           = v.HonorName,
                                tbTeacher           = teacherList.Where(d => d.TeacherCode == v.TeacherCode).FirstOrDefault(),
                                tbTeacherHonorLevel = teacherHonorLevelList.Where(d => d.TeacherHonorLevelName == v.TeacherHonorLevelName).FirstOrDefault(),
                                tbTeacherHonorType  = teacherHonorTypeList.Where(d => d.TeacherHonorTypeName == v.TeacherHonorTypeName).FirstOrDefault()
                            };
                            tbTeacherHonorList.Add(tb);
                        }
                    }
                    db.Set <Teacher.Entity.tbTeacherHonor>().AddRange(tbTeacherHonorList);

                    if (db.SaveChanges() > 0)
                    {
                        vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error));
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("导入教师荣誉");
                        //刷新缓存
                        System.Web.HttpContext.Current.Cache["Power"] = Sys.Controllers.SysRolePowerController.GetPower();
                        vm.Status = true;
                    }
                    #endregion
                }
            }

            return(View(vm));
        }
Exemplo n.º 2
0
        public ActionResult Import()
        {
            var vm = new Models.TeacherHonor.Import();

            return(View(vm));
        }