public ActionResult Edit(Models.ExamImportSegmentMark.Edit vm) { using (var db = new XkSystem.Models.DbContext()) { var error = new List <string>(); if (error.Count == decimal.Zero) { if (db.Table <Exam.Entity.tbExamImportSegmentMark>().Where(d => d.SegmentName == vm.ExamImportSegmentMarkEdit.SegmentName && !string.IsNullOrEmpty(vm.ExamImportSegmentMarkEdit.SegmentName) && d.tbGrade.Id == vm.ExamImportSegmentMarkEdit.GradeId && d.Id != vm.ExamImportSegmentMarkEdit.Id).Any()) { error.AddError("该年级分数段已存在!"); } else { if (vm.ExamImportSegmentMarkEdit.Id == 0) { var tb = new Exam.Entity.tbExamImportSegmentMark(); tb.No = vm.ExamImportSegmentMarkEdit.No == null?db.Table <Exam.Entity.tbExamImportSegmentMark>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.ExamImportSegmentMarkEdit.No; tb.SegmentName = vm.ExamImportSegmentMarkEdit.SegmentName; tb.tbGrade = db.Set <Basis.Entity.tbGrade>().Find(vm.ExamImportSegmentMarkEdit.GradeId); tb.MinMark = vm.ExamImportSegmentMarkEdit.MinMark; tb.MaxMark = vm.ExamImportSegmentMarkEdit.MaxMark; db.Set <Exam.Entity.tbExamImportSegmentMark>().Add(tb); if (db.SaveChanges() > 0) { XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("添加分数段"); } } else { var tb = (from p in db.Table <Exam.Entity.tbExamImportSegmentMark>() where p.Id == vm.ExamImportSegmentMarkEdit.Id select p).FirstOrDefault(); if (tb != null) { tb.No = vm.ExamImportSegmentMarkEdit.No == null?db.Table <Exam.Entity.tbExamImportSegmentMark>().Select(d => d.No).DefaultIfEmpty(0).Max() + 1 : (int)vm.ExamImportSegmentMarkEdit.No; tb.SegmentName = vm.ExamImportSegmentMarkEdit.SegmentName; tb.tbGrade = db.Set <Basis.Entity.tbGrade>().Find(vm.ExamImportSegmentMarkEdit.GradeId); tb.MinMark = vm.ExamImportSegmentMarkEdit.MinMark; tb.MaxMark = vm.ExamImportSegmentMarkEdit.MaxMark; 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.ExamImportSegmentMark.Import vm) { var error = new List <string>(); if (error.Count == decimal.Zero) { var file = Request.Files[nameof(vm.UploadFile)]; var fileSave = System.IO.Path.GetTempFileName(); file.SaveAs(fileSave); using (var db = new XkSystem.Models.DbContext()) { try { var ExList = new List <string>() { ".xlsx" }; if (!ExList.Contains(System.IO.Path.GetExtension(file.FileName))) { error.AddError("上传的文件不是正确的EXCLE文件!"); } else { var dt = Code.NpoiHelper.ExcelToDataTable(fileSave, System.IO.Path.GetExtension(file.FileName), string.Empty); if (dt == null) { error.AddError("无法读取上传的文件,请检查文件格式是否正确!"); } else { 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)) { error.AddError("上传的EXCEL内容与预期不一致!错误详细:" + Text); } var gradeList = (from p in db.Table <Basis.Entity.tbGrade>() orderby p.No select new { GradeName = p.GradeName, GradeId = p.Id }).ToList(); var segmentList = from p in db.Table <Exam.Entity.tbExamImportSegmentMark>() where p.tbGrade.IsDeleted == false select p; foreach (DataRow dr in dt.Rows) { var No = dr["排序"].ToString().Trim(); var grade = dr["年级"].ToString().Trim(); var segmentName = dr["分数段"].ToString(); var mixMark = dr["最低百分数"].ToString().Trim(); var maxMark = dr["最高百分数"].ToString().Trim(); if (string.IsNullOrEmpty(grade) || string.IsNullOrEmpty(segmentName)) { continue; } if (gradeList.Where(d => d.GradeName == grade).Count() == decimal.Zero) { var strmes = string.Format("年级不存在({0})", grade); error.AddError(strmes); } var tb = (from p in segmentList where p.tbGrade.GradeName == grade && p.SegmentName == segmentName select p).FirstOrDefault(); if (tb == null) { var tf = new Exam.Entity.tbExamImportSegmentMark(); tf.No = No.ConvertToIntWithNull(); tf.tbGrade = db.Table <Basis.Entity.tbGrade>().Where(d => d.GradeName == grade).FirstOrDefault(); tf.SegmentName = segmentName; tf.MinMark = mixMark.ConvertToDecimal(); tf.MaxMark = maxMark.ConvertToDecimal(); db.Set <Exam.Entity.tbExamImportSegmentMark>().Add(tf); } else { tb.No = No.ConvertToIntWithNull(); tb.MinMark = mixMark.ConvertToDecimal(); tb.MaxMark = maxMark.ConvertToDecimal(); } } if (db.SaveChanges() > decimal.Zero) { error.AddError("导入成功!"); vm.Status = true; XkSystem.Areas.Sys.Controllers.SysUserLogController.Insert("批量添加分数段"); } } } } catch (Exception ex) { error.AddError("上传的EXCEL内容与预期不一致!错误详细:" + ex.Message); } } } return(this.Import(vm, error)); }