예제 #1
0
 public ActionResult Import(Models.ExamImportSegmentMark.Import vm, List <string> error = null)
 {
     using (var db = new XkSystem.Models.DbContext())
     {
         if (error != null && error.Count > decimal.Zero)
         {
             ModelState.AddModelError("", error[0]);
         }
         return(View(vm));
     }
 }
예제 #2
0
        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));
        }