public ActionResult Edit(Models.StudyCost.Edit vm)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var error = new List <string>();
                if (error.Count == decimal.Zero)
                {
                    if (vm.StudyCostEdit.Id == 0)
                    {
                        var check = (from p in db.Table <Study.Entity.tbStudyCost>()
                                     where p.tbTeacher.Id == vm.StudyCostEdit.TeacherId
                                     select p).FirstOrDefault();
                        if (check == null)
                        {
                            var tb = new Study.Entity.tbStudyCost();
                            tb.No = vm.StudyCostEdit.No == null?db.Table <Study.Entity.tbStudyCost>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.StudyCostEdit.No;

                            tb.tbTeacher = db.Set <Teacher.Entity.tbTeacher>().Find(vm.StudyCostEdit.TeacherId);
                            tb.Cost      = Convert.ToDecimal(vm.StudyCostEdit.Cost);
                            db.Set <Study.Entity.tbStudyCost>().Add(tb);
                        }
                        else
                        {
                            check.Cost = Convert.ToDecimal(vm.StudyCostEdit.Cost);
                        }
                        if (db.SaveChanges() > 0)
                        {
                            XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加费用设置");
                        }
                    }
                    else
                    {
                        var tb = (from p in db.Table <Study.Entity.tbStudyCost>()
                                  where p.Id == vm.StudyCostEdit.Id
                                  select p).FirstOrDefault();
                        if (tb != null)
                        {
                            tb.No = vm.StudyCostEdit.No == null?db.Table <Study.Entity.tbStudyCost>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.StudyCostEdit.No;

                            tb.tbTeacher = db.Set <Teacher.Entity.tbTeacher>().Find(vm.StudyCostEdit.TeacherId);
                            tb.Cost      = Convert.ToDecimal(vm.StudyCostEdit.Cost);
                            if (db.SaveChanges() > 0)
                            {
                                XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("修改费用设置");
                            }
                        }
                        else
                        {
                            error.AddError(Resources.LocalizedText.MsgNotFound);
                        }
                    }
                }
                return(Code.MvcHelper.Post(error, Url.Action("List")));
            }
        }
        public ActionResult Import(Models.StudyCost.Import vm)
        {
            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 1、Excel模版校验
                    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));
                    }
                    #endregion

                    #region 2、Excel数据读取
                    foreach (System.Data.DataRow dr in dt.Rows)
                    {
                        var dtoStudy = new Dto.StudyCost.Import()
                        {
                            TeacherCode = Convert.ToString(dr["职工号"]),
                            TeacherName = Convert.ToString(dr["姓名"]),
                            Cost        = Convert.ToString(dr["节次费用"]),
                        };
                        if (vm.ImportList.Where(d => d.TeacherCode == dtoStudy.TeacherCode &&
                                                d.TeacherName == dtoStudy.TeacherName
                                                ).Count() == 0)
                        {
                            vm.ImportList.Add(dtoStudy);
                        }
                    }
                    vm.ImportList.RemoveAll(d =>
                                            string.IsNullOrEmpty(d.TeacherCode) &&
                                            string.IsNullOrEmpty(d.TeacherName)
                                            );
                    if (vm.ImportList.Count == 0)
                    {
                        ModelState.AddModelError("", "Excel未读取到任何有效数据!");
                        return(View(vm));
                    }
                    #endregion

                    #region 3、Excel格式校验
                    var teacherList = (from p in db.Table <Teacher.Entity.tbTeacher>()
                                       select p).ToList();
                    foreach (var item in vm.ImportList)
                    {
                        if (string.IsNullOrEmpty(item.TeacherCode))
                        {
                            item.Error = item.Error + "职工号不能为空!";
                            continue;
                        }
                        if (string.IsNullOrEmpty(item.TeacherName))
                        {
                            item.Error = item.Error + "姓名不能为空!";
                            continue;
                        }
                        else
                        {
                            if (teacherList.Where(d => d.TeacherCode == item.TeacherCode).Count() == decimal.Zero)
                            {
                                item.Error = item.Error + "职工号不存在数据库!";
                                continue;
                            }
                        }
                    }
                    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 4、Excel执行导入
                    var studyCostList = (from p in db.Table <Study.Entity.tbStudyCost>()
                                         select p).ToList();

                    var addStudyList = new List <Study.Entity.tbStudyCost>();
                    foreach (var item in vm.ImportList)
                    {
                        Study.Entity.tbStudyCost tb = null;
                        tb = studyCostList.Where(d => d.tbTeacher.TeacherCode == item.TeacherCode).Select(d => d).FirstOrDefault();
                        if (tb != null)
                        {
                            tb.Cost = item.Cost.ConvertToDecimal();
                        }
                        else
                        {
                            tb           = new Study.Entity.tbStudyCost();
                            tb.tbTeacher = (from p in db.Table <Teacher.Entity.tbTeacher>()
                                            where p.TeacherCode == item.TeacherCode
                                            select p).FirstOrDefault();
                            tb.Cost = item.Cost.ConvertToDecimal();
                            addStudyList.Add(tb);
                        }
                    }
                    db.Set <Study.Entity.tbStudyCost>().AddRange(addStudyList);
                    if (db.SaveChanges() > 0)
                    {
                        XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量导入节次费用");
                        vm.Status = true;
                    }
                    #endregion
                }
            }
            vm.ImportList.RemoveAll(d => string.IsNullOrEmpty(d.Error));
            return(View(vm));
        }